0

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

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

这是我的脚本等级:

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

我认为我遇到的问题是#! /bin/tcsh -f 我在 Windows 上工作的第一行!但是在我在 Windows 编辑器上编写脚本后,我使用 dos2unix 等级对其进行了转换,这可能是什么问题,在此先感谢您的帮助

4

2 回答 2

3

我不认为你的dos2unix工作。看来您仍然\r在它不喜欢的 hash-bang 行的末尾有一个。看起来它正在看到/bin/tcsh -f\r,将其解释为/bin/tcsh -f -\r,然后尝试打印错误消息:

Unknown option: `-\r'

\r导致结束引号出现在行首。如果您想准确查看文件中的内容,请尝试cat -A ./rank打印所有隐藏字符。你可能会看到

#! /bin/tcsh -f^M$
于 2010-05-31T16:10:02.413 回答
0

我将 tcsh 安装到我的 Linux 机器上并运行该脚本并且它有效,所以我猜你的换行符是错误的。

该错误似乎只是意味着当调用 tcsh shell 时,它接收到无效参数。我认为它得到的是整个脚本作为参数列表。我尝试将 -f 更改为 -g (不被识别为 tcsh 参数),我得到:

Unknown option: `-g'
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ].

请注意它仍然告诉我无效参数的名称?

或者你的 tcsh 启动错误。启动 tcsh shell 时可以提供默认参数。你试过启动一个吗?

但实际上,学习 tcsh 的唯一原因是您需要维护一些古老的 tcsh 脚本。即便如此,如果可能的话,我也会先将它们转换为其他脚本语言。如果你想学习 shell 脚本,试试 bash 或 bourne shell。tcsh 会让你发疯的原因有很多。

于 2010-05-31T16:09:54.790 回答