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