我正在尝试编写一个单行 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 "&"
但那些有意想不到的结果。
您不使用;
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)