您什么都不评估,“测试”无法评估它。
~> [ $empty_var = stopfile ]
-bash: [: =: unary operator expected
首先,不要解析 ls:
http://mywiki.wooledge.org/BashPitfalls#for_i_in_.24.28ls_.2A.mp3.29
编辑:部分问题是你的循环实际上是在做测试,尝试这样的事情(假设 receive_dir 是相对的):
@user000001 是对的;我原来的 find 示例会遇到同样的问题,所以这个:
for i in receive_dir/*
do
time=$(date +%m-%d-%Y-%H:%M:%S)
echo $time
echo $i
[ $i = stopfile ] && break
done
编辑:根据您的评论添加另一个示例:
这个怎么样...
FOUND="N"
while [ "${FOUND}" = "N" ]
do
for i in receive_dir/*
do
time=$(date +%m-%d-%Y-%H:%M:%S)
echo $time
echo $i
[ "$i" = stopfile ] && FOUND="Y"
done
sleep 60
done