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
テストします。104
wc -l
[
または ksh 構文を使用します。
if (($(wc -l < "$LOGFILE") +0 > 55)); then...
(読み取り用に開くことができない場合など、+0
コマンドが出力を生成しない場合を扱います)。wc -l < "$LOGFILE"
$LOGFILE
55
(以前にスクリプトで生成された空のファイルを削除することもできます。)