ファイルが存在する限りスリープシーケンスを実装したいbashシェルスクリプトを書いています。さて、最も単純なケースでは、これは次のようなものです。
while [ -f fileName ]
do
echo "waiting"
sleep 1
done
さて、私の状況では、最初の問題は次のとおりです。fileNameでワイルドカードを使用したい。これは、次のような方法で解決できます。
fileName="$path/$prefix*$suffix"
while [ -f $fileName ]
do
echo "waiting"
sleep 1
done
ただし、fileNameに一致する複数のファイルがある場合、これは失敗します
./testWait.sh: line 11: [: /home/nrc11/egsnrc/BEAM_TB_jaws/130318110457_s.lock: binary operator expected
これを解決するにはどうすればよいですか?
これが(半)特定の例です:
#!/bin/bash -u
timeStamp="130318110457"
echo "prefix of files: $timeStamp"
beamDir=$(awk '{ print $0 }' $timeStamp/$timeStamp.beamDir)
file="$EGS_HOME$beamDir/$timeStamp*.lock"
echo $file
while [ -f $file ]
do
echo "waiting"
sleep 1
done