运行这个简单的shell脚本时出现此错误:
previous_run=$(cat last_completed.txt)
for file in /Users/everardobarriga/testimg
do
b=$(ls -l "$file"|awk '{print $6$7$8}')
if [ "$previous_run" <= "$b" ]
then
echo $'yes'
fi
done
date +"%h%d%H:%M"> last_completed.txt
似乎在我比较之前的比赛和b的比赛中,它并没有真正比较它们。我对shell脚本非常陌生,所以我不确定是怎么回事。有时它比较它们有时它不会。非常感谢任何帮助!
答案 0 :(得分:0)
您不能将“&lt; =”用作小于或等于的比较器。您指定的语法是尝试从名为“=”的文件(不存在)中重定向stdin。请参阅“人体测试”,您将看到各种可用的比较选项。在这种情况下看起来你想要“-le”:
if [ "$previous_run" -le "$b" ]; then
echo "yes"
fi
答案 1 :(得分:0)
要按字典顺序排序字符串,您可以使用<
或>
内部测试。但是,符号需要小于或大于引号,因此shell不会将它们解释为重定向。
实施例
if [ "str1" '<' "str2" ]; then
echo "str1 is before str2"
else
echo "str1 is after str2"
fi