有人可以解释一下这个错误意味着什么:
> ./rank lines.in
'nknown option: `-
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ].
这是我的剧本排名:
#! /bin/tcsh -f
set line = `cat ${1}`
echo $line
我认为我遇到的问题是第一行#! /bin/tcsh -f
我在Windows上工作!但是在我在windows编辑器上编写脚本后,我使用dos2unix排名转换它,可能是什么问题,提前感谢任何帮助
答案 0 :(得分:2)
我不认为你的dos2unix
有效。看起来你在它不喜欢的哈希爆炸线的末尾仍然有一个\r
。它看起来像是/bin/tcsh -f\r
,将其解释为/bin/tcsh -f -\r
,然后尝试打印错误消息:
Unknown option: `-\r'
\r
导致结束引号出现在行的开头。如果您想查看文件中的确切内容,请尝试cat -A ./rank
打印所有隐藏字符。你可能会看到
#! /bin/tcsh -f^M$
答案 1 :(得分:0)
我在我的Linux机器上安装了tcsh并运行该脚本并且它运行正常,所以我猜你的换行是错误的。
错误似乎意味着当调用tcsh shell时它会收到无效参数。我认为它得到的是整个脚本作为参数列表。我尝试将-f更改为-g(未被识别为tcsh参数),我得到了:
Unknown option: `-g'
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ].
注意它仍然告诉我无效参数的名称?
或者你的tcsh开始出错了。启动tcsh shell时可以给出默认参数。你试过开始吗?
但实际上,学习tcsh的唯一原因是你需要维护一些古老的tcsh脚本。即使这样,我也会开始将它们转换为其他脚本语言,如果可能的话。如果您想学习shell脚本,请尝试使用bash或bourne shell。有很多reasons为什么tcsh会让你发疯。