shell中的未知错误

时间:2010-05-31 15:49:19

标签: scripting csh tcsh

有人可以解释一下这个错误意味着什么:

 > ./rank lines.in
'nknown option: `-
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ].

这是我的剧本排名:

#! /bin/tcsh -f
set line = `cat ${1}`
echo $line

我认为我遇到的问题是第一行#! /bin/tcsh -f 我在Windows上工作!但是在我在windows编辑器上编写脚本后,我使用dos2unix排名转换它,可能是什么问题,提前感谢任何帮助

2 个答案:

答案 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会让你发疯。