使用不同 shell 呼叫另一個腳本的腳本出錯

使用不同 shell 呼叫另一個腳本的腳本出錯

我有一個在 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腳本之前建立的空文件)。

相關內容