在没有返回值时防止一元运算符预期错误?

问题描述

当我的命令语句仅有时返回整数值时,我如何防止出现此类错误 ./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 问题。