我正在写一个bash shell脚本,我想只要一个文件存在实现休眠序列。现在,在最简单的情况下,这是一样的东西:现在如何检查文件使用通配符实存在while循环shell脚本
while [ -f fileName ]
do
echo "waiting"
sleep 1
done
,在我的处境的第一个问题是:我想在文件名中使用通配符。这可以通过类似这样解决:
fileName="$path/$prefix*$suffix"
while [ -f $fileName ]
do
echo "waiting"
sleep 1
done
然而,这个如果有多个文件匹配文件名
./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
应该怎么测试?是否所有文件都存在?任何存在?还有别的吗? – 2013-03-18 11:05:17