我在下面给出了这段代码作为我的主脚本的一部分
if [ -e /tmp/rsm/Logs/filename_$$.txt ];
then
{
total=0
for files in $(<filename_$$.txt);
do
#cd /tmp/rsm/Logs
docs=`grep -i "Number.*processed" $files | cut -d" " -f5`
total=$(($total+$docs))
done
echo "---------------------------------------------------------"
echo "Total Number Of Documents Processed On $date : $total"
echo "---------------------------------------------------------"
}
else
{
echo "There are "0" logfiles processed on $date"
}
fi
这给出了错误
SDSLoad_onscreendocs.ksh[32]: 1024+: 0403-053 Expression is not complete; more tokens expected.
答案1
因为以下几行
docs=`grep -i "Number.*processed" $files | cut -d" " -f5`
total=$(($total+$docs))
如果docs
变量为空,那么您将面临此问题,或者可能docs
具有除整数之外的不同值。所以你需要手动或在调试模式下检查。
您还可以再添加一项检查,假设 docs 如果为 null,则设置为零,例如。
[ -z $docs ] && docs=0
或者更清楚的是短路:
docs=$(grep -i "Number.*processed" $files | cut -d" " -f5 || echo 0)