给出以下bash循环:
for ((x=1; x<=$y; x++)); do echo $x; done
1
2
3
4
如何“背景”个别任务?
09:25:58/~ $for ((x=1; x<=$y; x++)); do echo $xi &; done
-sh: syntax error near unexpected token `;'
我尝试“抨击”回声,但这也不起作用:
09:26:37/~ $for ((x=1; x<=$y; x++)); do bash -c "echo $x" &; done
-sh: syntax error near unexpected token `;'
答案 0 :(得分:2)
&
和;
都是shell中的命令终止符。
您只需要终止每个命令一次。所以不要同时使用它们:
for ((x=1; x<=$y; x++)); do echo $x & done
通过使用两个;
来获得相同的错误:
$ for ((x=1; x<=$y; x++)); do echo $x ; ; done
-bash: syntax error near unexpected token `;'
请注意,尝试使用;;
会收到不同的错误,因为;;
是shell的特殊标记(在case
语句中使用):
-bash: syntax error near unexpected token `;;'
%start complete_command %% complete_command : list separator | list ; list : list separator_op and_or | and_or ; .... separator_op : '&' | ';' ; separator : separator_op linebreak | newline_list ;
答案 1 :(得分:1)
for ((x=1; x<=$y; x++)); do { echo $x & } ; done
答案 2 :(得分:1)
这将有效:
for ((x=1; x<=y; x++)); do echo $x & done
请注意;
之后没有&
。但是,使用换行符会使其更具可读性:
for ((x=1; x<=y; x++)); do
echo $x &
done