我有一个简单的文件,如下所示。当我在 shell 中键入每个命令时,它可以工作,但是当我在脚本中编译它们时,它不会 - 产生错误 - 找不到文件或目录,如下所示
我似乎无法弄清楚为什么会这样
#!/bin/tcsh -f
set curdir = `pwd`
echo $curdir
set default = `find $curdir -name "*.metadb" `
echo $default
exit
命令行中的屏幕截图
我有一个简单的文件,如下所示。当我在 shell 中键入每个命令时,它可以工作,但是当我在脚本中编译它们时,它不会 - 产生错误 - 找不到文件或目录,如下所示
我似乎无法弄清楚为什么会这样
#!/bin/tcsh -f
set curdir = `pwd`
echo $curdir
set default = `find $curdir -name "*.metadb" `
echo $default
exit
命令行中的屏幕截图
该消息
…/test\r': No such file or directory
使我怀疑至少该行在您的脚本中包含一个尾随回车符。看到这个类似的问题:我为什么会得到
line 1: $' :\r': command not found
?手动输入时,自然不会输入此字符*。
这个角色和
X
在用于
dos2unix thescript
修复脚本。链接问题下还有更多方法。为了完整起见,这是一个可移植的方法:(这将删除脚本中任何地方的所有回车。)
将来不要让 Windows 行尾污染您的脚本。如果您在某些 Windows 文本编辑器中编辑脚本,请确保它使用
\n
特定于 Unix,而不是\r\n
特定于 Windows。在某些情况下,通过 FTP 传输文件可能会添加回车符(示例和见解:此处)。*实际上可能你会。您Enter可能会发送
\r
,但最终它还是被 shell 解释为“执行命令行”。实际上,您无需\r
在命令行中键入内容。您脚本中的OTOH\r
不会这样解释。在脚本中只\n
终止一行。