HP-UX **** B.11.31 U ia64 ***** 无限用户许可证
LINE_COUNT=`wc -l ${LOG_DIR}/file_transaction.log`
if [ ${LINE_COUNT:-"0"} -ge 10000 ]
then
mv ${LOG_DIR}/file_transaction.log ${LOG_DIR}/file_transaction.${DATE_STAMP}.log
fi
上面的代码生成
/opt/***/***/bin/***_file_mgmt_out.ksh[239]: /var/opt/***/****/log/file_transaction.log: unknown test operator
我无法在下面的代码中重现此错误
LINE_COUNT=1234
if [ ${LINE_COUNT:-"0"} -ge 1000 ]
then
echo "line count is greater than thousand"
else
echo "line count is lesser than thousand"
fi
我尝试使用 LINE_COUNT=990 和 LINE_COUNT="" 执行上述代码
答案1
如果您像使用文件作为参数一样使用 wc -l ,您会得到类似的结果
line-count file-name
这对于测试操作员来说是不合适的格式。
如果您只想要行数,请让 wc 从标准输入读取文件......
LINE_COUNT=$( wc -l < "${LOG_DIR}/file_transaction.log" )
答案2
检查 的输出wc -l ${LOG_DIR}/file_transaction.log
。它将采用以下形式:
1234 .../file_transaction.log
相反,使用:
wc -l < ${LOG_DIR}/file_transaction.log