Bash 使用 Until 循环的帮助

Bash 使用 Until 循环的帮助

希望您能为我指明正确的方向。我有一个通过 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

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

until omp -u admin -w admin -h 127.0.01 -p 9390 -G | grep "Done";
done

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

./Pen-test-automation.sh: line 226: syntax error near unexpected token `Done'
./Pen-test-automation.sh: line 226: `Done'

请帮助 :)

答案1

您需要添加do some_command

until omp -u admin -w admin -h 127.0.01 -p 9390 -G | grep "Done"
do
    :
done

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

更简单的例子

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

$ until echo $RANDOM | grep 5; done
bash: syntax error near unexpected token `done'

如果我们添加do和占位符命令(例如):,则循环可以正常运行:

$ until echo $RANDOM | grep 5; do : ; done
15857

相关内容