我有一种情况,我必须等待字符串存在于文件中。该文件在后台动态更新,并且一旦更新并具有特定的字符串,则只有我要执行一些操作。
例如我有一个文件test
,里面有一些字符串
/data # cat test
Ice
trigger
hello
Hi
文件hello
中的grep字符串test
,它应该返回Found
,它按预期方式工作
/data # grep -q 'hello' test && echo 'Found'
Found
现在,等待字符串出现在文件中,一旦文件被更新并具有特定的字符串,然后回显Found hello
在这种情况下,我收到sh:-q:未知操作数错误。
/data # while [ ! grep -q 'hello' test ]; do sleep 1; done && echo ‘Found hello’
sh: -q: unknown operand
‘Found hello’
我正在使用busybox
容器。另外,我已经检查了grep
在-q
中是否支持busybox
操作数。
/data # busybox grep --help
BusyBox v1.30.1 (2019-06-12 17:51:55 UTC) multi-call binary.
Usage: grep [-HhnlLoqvsriwFE] [-m N] [-A/B/C N] PATTERN/-e PATTERN.../-f FILE [FILE]...
有人可以解释为什么我会收到此错误吗?
如果要循环,只要找到[hello
],就使用:while ! grep -q 'hello' test; do sleep 1; done && echo "Found hello"