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

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

shシェルで実行されるスクリプトがありますが、うまくいきます。しかし、kshシェルで書かれたスクリプトを追加しましたが(スクリプトヘッドに#!/ 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

トピックの出力(あなたの場合は104)に対して分割+ globコマンドを発行し、その出力を現在のディレクトリからwc呼び出されるファイルにリダイレクトします。55システムに104というコマンドがないため、このエラーが発生します。

おそらくあなたは次のように書きたいと思うでしょう:

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

[つまり、代わりにakaコマンドを実行して、算術式として解釈された出力が(したがって先行スペース(ある場合)について文句を言わない)が55より大きいかどうかをtestテストします。104wc -l[

または ksh 構文を使用します。

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

(読み取り用に開くことができない場合など、+0コマンドが出力を生成しない場合を扱います)。wc -l < "$LOGFILE"$LOGFILE

55(以前にスクリプトで生成された空のファイルを削除することもできます。)

おすすめ記事