是否可以for
在watch
命令中使用-loop ?
我不太确定我尝试过的这个错误是怎么回事:
$ 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'
$
watch
的命令参数是一个使用sh -c
.
如果命令参数只是一个由空格分隔的标记列表(例如watch ls -l
),它会将它们全部连接起来并运行它们。但是不带引号的shell元字符由运行外壳采用watch
从并不会被看到watch
。
这意味着;
&
|
<
>
需要对诸如etc 之类的元字符进行转义或引用,以防止您在其中运行的 shellwatch
将这些字符视为例如标记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'
注意:您可以使用watch
的-x
,如果你想要的东西的exec没有选项sh -c
。例如watch -x awk -f script.awk
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句