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