この単純なbashスクリプトを実行しようとすると構文エラーが発生します。私はこの簡単な文書に従いました。https://www.cyberciti.biz/faq/bash-for-loop/しかし幸運はありません。何が間違っているのか分からないのですか?
#!/bin/bash
for i in 1 2 3 4 5
do
echo "Count $i"
done;
間違い:
setup.sh: 3: setup.sh: Syntax error: word unexpected (expecting "do")
ここでは、WSL(Linux用Windowsサブシステム)でスクリプトを実行しています。
答え1
スクリプトファイルはDOSテキストファイルです。各行の末尾にある追加のキャリッジリターンは混乱しています(代わりにbash
表示されます)。do\r
do
同じツールを使用してUnixテキストファイルに変換するか、dos2unix
エディタでUnixテキストファイルとして保存することを確認してください。
答え2
ちょうどcentosシステムで同じスクリプトを実行し、ファイルが動作しました。 Kusalanandaが提案したように、スクリプトファイルをdosからunixに変換します。 dos2unix パッケージがまだインストールされていない場合はインストールします。その後、次のコマンドを使用して$ dos2unix(ファイル名)を変換できます。
答え3
#!/bin/bash
for i in 1 2 3 4 5
do
echo "Count $i"
done;
ループを実行するより良い方法は次のとおりです。
for i in {1..5}; do
echo "Count $i";
done
これにより、その数字をすべて指定する必要がなくなります。もしそうなら、あなたの方法を使って100個の数字を繰り返す必要がある場合はどうすればいいですか?