“find”命令在脚本中给出错误,但在命令行中没有出现

“find”命令在脚本中给出错误,但在命令行中没有出现

我有一个简单的文件,如下所示。当我在 shell 中输入每个命令时,它可以工作,但是当我在脚本中编译它们时,它却不行 - 产生错误 - 未找到文件或目录,如下所示

我似乎不明白为什么会这样

#!/bin/tcsh -f
set curdir = `pwd`
echo $curdir
set default = `find $curdir -name "*.metadb" `
echo $default
exit

命令行中的屏幕截图

答案1

这条信息…/test\r': No such file or directory让我怀疑至少线

set curdir = `pwd`

脚本中包含尾随回车符。请参阅以下类似问题:我为什么会得到line 1: $' :\r': command not found

当手写打字的时候,你自然不会输入这个字符*。

角色是错误的,X就像

set curdir = `pwd`X

用于dos2unix thescript修复脚本。链接问题下有更多方法。为了完整起见,这里有一个可移植的方法:

tr -d '\r' <thescript >script.new && mv script.new thescript

(这将删除所有回车符任何地方在脚本中。

以后不要让 Windows 行尾污染你的脚本。如果你在某些 Windows 文本编辑器中编辑脚本,请确保它使用\n特定于 Unix,不\r\n特定于 Windows在某些情况下,通过 FTP 传输文件可能会添加回车符(示例和见解:这里)。


*实际上你很可能这样做。你Enter可能发送了\r,但最终它还是会被 shell 解释为“执行命令行”。实际上你并没有\r在命令行中输入。另一方面,\r你的脚本中的 并不是这样解释的。在脚本中只\n终止一行。

相关内容