“ sh:-q:未知操作数”,带有grep [duplicate]

问题描述 投票:0回答:1

我有一种情况,我必须等待字符串存在于文件中。该文件在后台动态更新,并且一旦更新并具有特定的字符串,则只有我要执行一些操作。

例如我有一个文件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]...

有人可以解释为什么我会收到此错误吗?

bash grep busybox
1个回答
0
投票

如果要循环,只要找到[hello],就使用:while ! grep -q 'hello' test; do sleep 1; done && echo "Found hello"

© www.soinside.com 2019 - 2024. All rights reserved.