Bash Forループが機能しない

Bash Forループが機能しない

この単純な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\rdo

同じツールを使用して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個の数字を繰り返す必要がある場合はどうすればいいですか?

関連情報