異なるシェルを持つ別のスクリプトを呼び出すスクリプトでエラーが発生しました

異なるシェルを持つ別のスクリプトを呼び出すスクリプトでエラーが発生しました

shシェルで実行されるスクリプトがあり、このスクリプトは正常に動作します。しかし、kshシェルで書かれたスクリプトを1つ追加しました(スクリプトの先頭に#!/bin/kshがあります)が、毎回エラーが発生します。

./monitor_FMn2.sh[19]: 104:  not found

毎回エラーが発生した2行目を変更します。19行目はkshスクリプトを呼び出す行です。

if `wc -l < $LOGFILE` > 55;
    then
    logcycle $LOGFILE
fi

ログサイクルksh スクリプトです。

答え1

`wc -l < $LOGFILE` > 55

subjectの出力と同じ名前のコマンドをwcsplit+glob に実行し (この場合は 104)、その出力を55現在のディレクトリにある というファイルにリダイレクトします。システムには 104 というコマンドがないため、このエラーが発生します。

おそらく、次のように書きたかったのでしょう:

if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...

つまり、 の代わりに[akaコマンドを実行して、算術式として解釈されたの出力(先頭のスペースがあってもエラーにならない) が 55 より大きいかどうかをテストします。test104wc -l[

または、ksh 構文では次のようになります。

if (($(wc -l < "$LOGFILE") +0 > 55)); then...

( は、を読み取り用に開けない場合など、コマンドが出力を生成しない+0場合をカバーします)。wc -l < "$LOGFILE"$LOGFILE

55(スクリプトによって以前に作成された空のファイルも削除する必要があります)。

関連情報