タイムスタンプに基づいてログファイルを切り取るためにawkと変数を使用しています。
LAST_LOG=$last_log awk 'index($0, ENVIRON["LAST_LOG"]) {y=1;next};y' $log_file ;
日付がログファイルにまだ存在する場合は機能しますが、awk
ログファイルがアーカイブされて新しいファイルに置き換えられると失敗します。
cat $log_file
失敗したらawk
次に置き換えたいです。
LAST_LOG=$last_log awk 'index($0, ENVIRON["LAST_LOG"]) {y=1;next};y' $log_file ; \
|| cat $log_file
しかし、この構文はsyntax error near unexpected token ||
。
上記の行は、後で使用または使用できる&&
通常の機能ではありませんか?||
ベストアンサー1
問題; ||
は
LAST_LOG=$last_log awk 'index($0, ENVIRON["LAST_LOG"]) {y=1;next};y' $log_file ; || cat $log_file
;
呼び出しを終了すると、awk
次のコマンドが始まります。||
これは構文エラーです。
あなたが望むのは、y
ログファイルの解析の終わりに1でないことを確認することです。この場合、make はawk
ゼロ以外の終了状態を返します。
LAST_LOG="$last_log" awk '
index($0, ENVIRON["LAST_LOG"]) { y = 1; next }
y { print }
END { exit !y }' <"$log_file" || cat <"$log_file"
明示的でない場合、exit
何らかの種類のエラーが発生すると、ゼロ以外の終了状態が得られます。awk