Bashスクリプト:ls -1を介してファイルを確認していますが、ファイルがない場合はループも実行したいと思います。

Bashスクリプト:ls -1を介してファイルを確認していますが、ファイルがない場合はループも実行したいと思います。

ディレクトリに12個のファイルがあることを確認する必要があります。このループはファイルが1つしかない場合にうまく機能し、「sleep 300」を使用して4回繰り返されます。ただし、ファイルがまったくない場合は失敗し、繰り返されません。ファイルがまったくなくても繰り返されるようにするには、何を追加できますか?簡単に言えば、20分のファイル転送時間を確認したいと思います。

retry() {
attempt_num=0
    while [[ `ls -1 *File*${JulianDate}.* | wc -l` -lt 12 ]]
    do

ベストアンサー1

ls出力を解析しません。。ファイルのリストを配列として読み込み、配列のサイズを確認します。

retry() {
    while true; do
        files=( *File*${JulianDate}.* )
        (( ${#files[@]} >= 12 )) && break
        sleep for some amount
    done
    do stuff with 12 or more files ...
}

おすすめ記事