使用带有“;”的bash“&”运算符 轮廓线?

Jon*_*han 5 bash

我正在尝试编写一个单行 for 循环的命令,其中包含一个使用 & 运算符将命令置于后台的命令:

for dir in $(ls); do command $dir &; done
Run Code Online (Sandbox Code Playgroud)

Where&告诉 BASHcommand在后台运行。然而 BASH 返回

bash: syntax error near unexpected token `;'
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我怎样才能&与 一起使用;?我试着用引号括起来,比如do "command $dir &"ordo command $dir "&"但那些有意想不到的结果。

Gra*_*eme 9

您不使用;with '&','&' 本身就足以完成命令。我相信目前手册中没有提到这种行为。你的循环只是:

for dir in $(ls); do command $dir & done
Run Code Online (Sandbox Code Playgroud)

此外,$(ls)如果文件名包含空格,您应该考虑使用 glob 而不是它会失败。如果没有文件,您可以设置nullglob为防止dir成为一个*

shopt -s nullglob
for dir in *; do command $dir & done
Run Code Online (Sandbox Code Playgroud)