我需要从终端重复(每 3600 秒)运行以下命令:
if whois abcxyz.com | grep -q 'string'; then
echo 'Message line 1'
echo 'Message line 2'
fi
Run Code Online (Sandbox Code Playgroud)
我尝试使用手表,如下所示:
watch -n 3600 if whois abcxyz.com | grep -q 'string'; then
echo 'Message line 1'
echo 'Message line 2'
fi
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息。
你能帮我让它工作吗?
谢谢
ste*_*ver 13
由于默认watch [options] command执行commandusing sh -c,您可以直接使用它运行 shell 代码片段,前提是:
和
所以例如
$ watch -n 36 'if whois abcxyz.com | grep -q "string"; then
echo "Message line 1" | ts
echo "Message line 2" | ts
fi'
Run Code Online (Sandbox Code Playgroud)
watch记录(在man watch)为:
watch [options] command
Run Code Online (Sandbox Code Playgroud)
它需要一个简单的命令,而不是一个完整的命令表达式,
因此,您必须将命令包装在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
Run Code Online (Sandbox Code Playgroud)
然后,在使foo可执行文件后chmod +x $HOME/bin/foo,
watch -n 3600 $HOME/bin/foo
Run Code Online (Sandbox Code Playgroud)