/ シェル内の不明なエラー - スクリプト作成、csh、tcsh

シェルスクリプト、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のランクを使用してそれを変換しました。

回答:

回答№1は2

私はあなたのことを思っていません dos2unix 働いた。それはあなたが「まだ持っているようだ」 r hash-bang行の最後には、「t t。好きではありません。 /bin/tcsh -frとして解釈する /bin/tcsh -f -rその後、エラーメッセージを表示しようとします。

Unknown option: `-r"

r 行末に引用符が表示されています。ファイルの内容を正確に確認したい場合は、 cat -A ./rank 隠し文字をすべて印刷します。あなたはおそらく見るでしょう

#! /bin/tcsh -f^M$

回答№2の場合は0

私は自分のLinuxマシンにtcshをインストールしてそのスクリプトを実行し、それがうまくいったので、改行は間違っていると思います。

エラーは単にtcshがシェルが呼び出され、無効なパラメータを受け取ります。私はそれが得られるのはパラメータリストとしてのスクリプト全体であると思います。 -fを-gに変更してみたところ(tcshパラメータとして認識されません)、次のようになりました。

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

それでもまだ無効なパラメータの名前が表示されることに注意してください。

それかあなたのtcshのどちらかが間違っています。 tcshシェルを起動するときにデフォルトのパラメータを指定することは可能です。始めてみましたか?

しかし、本当に、tcshを学ぶ唯一の理由はあなたがいくつかの古いtcshスクリプトを維持する必要があるならば。それでも、可能であれば、それらを他のスクリプト言語に変換することから始めます。シェルスクリプトを学びたい場合は、bashまたはbourneシェルを試してください。沢山あります 理由 なぜtcshは怒らせるのでしょう。