Notepad++ を使用して次のように入力します:
read s
echo "$s"
出力は次のとおりです。
そしてセミコロンを入れてみます:
read s;
echo "$s"
出力は次のようになります。
ファイルを として保存しq.sh
、cygwin で実行しましたが、それでも演算子を使用できないread
ため混乱しています。他のエディターvi
も試しましたが、出力は同じです。
何が問題なのでしょうか? どうすれば解決できるでしょうか?
答え1
シェル スクリプトを構成するテキスト ファイルは、Notepad++ で作成されました。このエディターは、デフォルトでファイルを DOS テキスト ファイルとして保存しますが、Unix の観点から見ると、\r
各行の末尾に余分な改行 ( ) が付きます。これにより、 が混乱しますsh
。
削除するには:
$ tr -d '\r' <q.sh >q-new.sh
$ mv q-new.sh q.sh
スクリプトする行がありません#!
(コメントで指摘されているように) が、明示的なインタープリター ( ) で実行する限りsh q.sh
、これは必要ありません。
行を追加する
#!/bin/sh
は、( の後にchmod +x q.sh
) それを として実行すると、./q.sh
で実行した場合とまったく同じように動作しますsh q.sh
。
答え2
Notepad++ にアクセスできる場合は、Unix のキャリッジ リターンを変換する別の方法があります。Notepad で、[編集] -> [EOL 変換] -> [Unix (LF)] に進みます。
フランス語では、Edition -> Convertir les sauts de ligne -> Converti au format Unix (LF) です。
もっと早くできます。