问题描述
当我的命令语句仅有时返回整数值时,我如何防止出现此类错误 ./checkConfigs.sh: line 22: [: -gt: unary operator expected
?
duplicatesConfig=`sort ${dirNames[0]}"$bf" | uniq -cd | sort -nr | awk '{sum+=$1} END{ print sum}'`
duplicatesBox=`sort ${dirNames[1]}"$bf" | uniq -cd | sort -nr | awk '{sum+=$1} END{ print sum}'`
if [ $duplicatesConfig -gt 0 ]
then
createcopy ${dirNames[0]}"$bf" 0
fi
if [ $duplicatesBox-gt 0 ]
then
createcopy ${dirNames[1]}"$bf" 1
fi
done
第 22 行是第一个 if 语句。
我正在使用 awk 来捕获文件中所有重复行的总和。当我重复计数 > 0 时,代码运行良好,但是当没有重复时它会抛出该错误。代码没有中断,但我想防止出现该错误。
解决方法
将 print sum
更改为 print sum+0
,以便始终从 awk 获得数字输出。
此外,将您的脚本复制/粘贴到 http://shellcheck.net 中并修复它告诉您的 shell 问题。