- ベストアンサー
cshのエラー、どういうこと?
- シェルスクリプト初心者の方がcshエラーに遭遇しました。具体的なエラーメッセージは「nkown option: `-」です。
- エラーメッセージの原因として、スクリプトの先頭部分に記述された「#! /bin/csh -f」という行が関係している可能性があります。
- 他のサンプルコードを参考にして作成したシェルスクリプトでは正常に動作していることから、パスの設定などに問題はないと思われますが、具体的な回避方法についてアドバイスをいただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 何らかのタイプミスがないとすると、改行文字が CRLF になっているのを unix/linux で実行しようとしているとか。 今手元に unix/linux がないので確認できませんが、もしそうならそういう状況になるような気がします。 -f ありのときはその後にCRがあるのでCRが不正なオプションとみなされ、-f 無しの時は /bin/cshにCRがくっついたものがファイル名とみなされ、そんなファイルはない。 CR の削除は、tr -d '\015' <file >outfile か、tr -d '[\015]' <file >outfile のどちらかでできると思います。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
2行目に、set echo verbose を入れるとどの行でエラーが出ているかがわかると思います。 いずれにせよ、cshで複雑なスクリプトを書くと直感的な動きをしないことがままあるはずなので、止めたほうがいいでしょう。スクリプトについては sh の方が高機能だし。
補足
回答ありがとうございます。 2行目に書き込んで実行したところ、同じメッセージが得られました。 念のため3行目に、"echo "test"といれましたが画面に表示されないということもあり、1行目に問題がありそうだとわかりました。 1行目を"#! /bin/csh -f"から"#! /bin/csh"にすると、スクリプトを実行してもcommand not foundと出てしまいます。同じディレクトリで"./"も付けて実行しているのに! まったく理由が分かりません。 自分で作った簡単なスクリプトは"#! /bin/csh -f"でも何の文句も言われないのに。 shが高機能だというアドバイスを頂きましたが、スクリプトが自作のものでないので、今回はどうにかしてcshで動かさなくてはならないという事情があります。
お礼
バイナリを見てみるとその通りでした。 CRを消すことによりスクリプトは実行されました。 ありがとうございます。 -fがあるときは"-f[CR]"というオプションがないと言っていて、-fをとったときは"/bin/csh[CR]"というコマンドがないと言っていたということですね。 コンピュータは正直です。