
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の出力と同じ名前のコマンドをwc
split+glob に実行し (この場合は 104)、その出力を55
現在のディレクトリにある というファイルにリダイレクトします。システムには 104 というコマンドがないため、このエラーが発生します。
おそらく、次のように書きたかったのでしょう:
if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...
つまり、 の代わりに[
akaコマンドを実行して、算術式として解釈されたの出力(先頭のスペースがあってもエラーにならない) が 55 より大きいかどうかをテストします。test
104
wc -l
[
または、ksh 構文では次のようになります。
if (($(wc -l < "$LOGFILE") +0 > 55)); then...
( は、を読み取り用に開けない場合など、コマンドが出力を生成しない+0
場合をカバーします)。wc -l < "$LOGFILE"
$LOGFILE
55
(スクリプトによって以前に作成された空のファイルも削除する必要があります)。