コマンドに-loopを使用できますかfor
?watch
私の試みでこのエラーを解決する方法がわかりません。
$ for i in 1 2 3; do echo $i; done
1
2
3
$ watch -n 10 for i in 1 2 3; do echo $i; done
-bash: syntax error near unexpected token `do'
$ watch for i in 1 2 3; do echo $i; done
-bash: syntax error near unexpected token `do'
$
ベストアンサー1
watch
~の注文するパラメータはスクリプトの実行に使用されますsh -c
。
もし注文する引数はスペースで区切られたトークンのリスト(例watch ls -l
)にすぎず、すべてのトークンを連結して実行します。ただし、引用されていないシェルメタ文字は次のとおりです。watch
実行するシェルで使用そして見たことがないwatch
。
;
&
|
<
>
これは、実行中のシェルがwatch
これらのwatch
文字をコマンドの終わりを表示したり、バックグラウンドでwatchコマンドを実行したり、出力をwatch
別のプログラムにパイプするコマンドとして解釈したりするのを防ぐために、エスケープや引用などのメタ文字をエスケープまたは引用する必要があることを意味します。 (パイプラインを実行する監視スクリプト内を除く)
一般的な引用規則を適用します。変数の補間を防ぐには一重引用符を使用し、それ以外の場合は二重引用符を使用します。 man watch
最後の部分にこれを示すサンプルセクションがあります。
たとえば、
watch -n 10 'for i in 1 2 3; do echo $i; done'
または
watch -n 10 'grep something /var/log/kern.log | tail'
注:.egなしで実行したい場合watch
。-x
sh -c
watch -x awk -f script.awk