我需要从终端重复运行(每 3600 秒)以下命令:
if whois abcxyz.com | grep -q 'string'; then
echo 'Message line 1'
echo 'Message line 2'
fi
我尝试使用watch,如下所示:
watch -n 3600 if whois abcxyz.com | grep -q 'string'; then
echo 'Message line 1'
echo 'Message line 2'
fi
但我收到错误消息。
你能帮助我让它工作吗?
谢谢
答案1
由于默认使用watch [options] command
执行,因此您command
sh -c
能使用它直接运行shell代码片段,前提是:
- 你引用得对
和
- 你的代码与 sh 兼容,即不使用任何 bash/zsh/csh-“isms”
例如
$ watch -n 36 'if whois abcxyz.com | grep -q "string"; then
echo "Message line 1" | ts
echo "Message line 2" | ts
fi'
答案2
watch
记录在 中man watch
为:
watch [options] command
它需要一个简单的命令,而不是一个完整的命令表达式,
所以,你必须将你的命令包装在bash
脚本中,就是watch
这样。
例如,
在$HOME/bin/foo
:
#!/bin/bash
if whois abcxyz.com | grep -q 'string'; then
echo 'Message line 1'
else
echo 'Message line 2'
fi
然后,使用以下命令使foo
之可执行chmod +x $HOME/bin/foo
,
watch -n 3600 $HOME/bin/foo