「if」ステートメントがbashスクリプトの予期しない「完了」マーク付近で構文エラーを発生させる[閉じる]

「if」ステートメントがbashスクリプトの予期しない「完了」マーク付近で構文エラーを発生させる[閉じる]

ループで5回繰り返すたびに、新しいファイルを生成するスクリプトを作成しようとしています。

#!/bin/bash
counter=1
timestamp="$(($(date +%s%N)/1000000))"
fileName="file"$timestamp".txt"
echo $fileName
while [ $counter -le 5 ]
do
        echo $counter
        ((counter++))
        timestamp="$(($(date +%s%N)/1000000))"
        echo $counter
        if [ $counter == 5 ]
        then
            echo "Creating new file"
            fileName="file"$timestamp".txt"
            counter=1
        echo "${timestamp}" >> $fileName
        sleep 2s
        echo $counter
done

スクリプトはエラーを返します。

file1561151901170.txt
ruunn.sh: line 20: syntax error near unexpected token `done'
ruunn.sh: line 20: `done'

該当する条項を削除した場合if:

#!/bin/bash
counter=1
timestamp="$(($(date +%s%N)/1000000))"
fileName="file"$timestamp".txt"
echo $fileName
while [ $counter -le 5 ]
do
        echo $counter
        ((counter++))
        timestamp="$(($(date +%s%N)/1000000))"
        echo $counter
        echo "${timestamp}" >> $fileName
        sleep 2s
        echo $counter
done

エラーは発生せず、出力は期待どおりです。

file1561152065603.txt
1
2
2
2
3
3
3
4
4
4
5
5
5
6
6

ifそれでは、その条項に問題があるようですが?

ifこのセクションがファイル生成プロセスに含まれるようにスクリプトを変更するにはどうすればよいですか?

ベストアンサー1

あなたはifそれの終わりを逃しましたfi

おすすめ記事