Bash 帮助直到循环

Ale*_*ing 4 command-line bash

希望你能指出我正确的方向。我有通过 CLI 运行 openvas 的脚本。

现在您必须运行另一个命令来查看作业的状态。作业总数将始终不同。例如,有一天会有 7 次扫描,接下来会有 13 次。

我需要脚本暂停,直到所有输出都说完成。

请参阅下面的命令输出。

omp -u admin -w admin -h 127.0.01 -p 9390 -G
7ee0ef08-686e-4ad6-b826-08938fc8b694  Running 28%  192.168.0.10
fa7230f9-6367-4db6-8eb5-f6368375d577  Running 94%  192.168.0.23
fbc4e409-e72d-4749-861d-db60ed55693b  Done         192.168.0.25
9e0f2e40-2da4-4ef6-af6f-9ab8cfbf9902  Running  1%  192.168.0.252
492c7462-a75e-4d44-b5dc-5c9af27c9e07  Running  1%  192.168.0.253
Run Code Online (Sandbox Code Playgroud)

在我的 bash 脚本中,我使用了以下内容

until omp -u admin -w admin -h 127.0.01 -p 9390 -G | grep "Done";
done
Run Code Online (Sandbox Code Playgroud)

现在,当脚本进入“直到”阶段时。我收到以下错误

./Pen-test-automation.sh: line 226: syntax error near unexpected token `Done'
./Pen-test-automation.sh: line 226: `Done'
Run Code Online (Sandbox Code Playgroud)

请帮忙 :)

Joh*_*024 5

您需要添加do some_command

until omp -u admin -w admin -h 127.0.01 -p 9390 -G | grep "Done"
do
    :
done
Run Code Online (Sandbox Code Playgroud)

冒号 ,:只是一个无操作命令。

更简单的例子

请注意,这会导致您看到的错误:

$ until echo $RANDOM | grep 5; done
bash: syntax error near unexpected token `done'
Run Code Online (Sandbox Code Playgroud)

如果我们添加do一个占位符命令,例如:,那么循环会正常运行:

$ until echo $RANDOM | grep 5; do : ; done
15857
Run Code Online (Sandbox Code Playgroud)