
我有一個在 sh shell 中運行的腳本,該腳本運行良好。但我添加了一個用 ksh shell 編寫的腳本(在腳本的頭部有 #!/bin/ksh),但每次我收到錯誤時
./monitor_FMn2.sh[19]: 104: not found
每次更改出現錯誤的第二行第 19 行是我呼叫 ksh 腳本的行
if `wc -l < $LOGFILE` > 55;
then
logcycle $LOGFILE
fi
日誌循環是 ksh 腳本。
答案1
`wc -l < $LOGFILE` > 55
執行名稱為 split+glob 主題的輸出(在您的範例中為 104)的指令,並將其輸出重新導向至目前目錄中wc
所呼叫的檔案。55
由於您的系統上沒有名為 104 的命令,因此您會收到該錯誤。
想必您想寫:
if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...
即執行[
akatest
指令(而不是)來測試解釋為算術表達式104
的輸出(因此不會抱怨前導空格(如果有))是否大於 55。wc -l
[
或使用 ksh 語法:
if (($(wc -l < "$LOGFILE") +0 > 55)); then...
(+0
覆蓋命令不產生輸出的情況wc -l < "$LOGFILE"
,例如$LOGFILE
無法開啟讀取時)。
(您可能還想刪除55
腳本之前建立的空文件)。