在后台使用&;运行bash管道命令;符号
上述命令中的语法错误是什么?我还尝试使用在后台使用&;运行bash管道命令;符号,bash,shell,Bash,Shell,上述命令中的语法错误是什么?我还尝试使用{}并用结束管道命令。但同样的错误也会出现…如果您想在后台并行运行所有作业,则应将&放在()中 time for i in `ls /tmp/chunk*`; do (cat $i | tr ' ' '\n' | sort | uniq > /tmp/line${i:10}) & ;done bash: syntax error near unexpected token `;' 可以在大括号中包含(&I): time for i in `
{}
并用结束管道命令代码>。但同样的错误也会出现…如果您想在后台并行运行所有作业,则应将&
放在()
中
time for i in `ls /tmp/chunk*`; do (cat $i | tr ' ' '\n' | sort | uniq > /tmp/line${i:10}) & ;done
bash: syntax error near unexpected token `;'
可以在大括号中包含(&I):
time for i in `ls /tmp/chunk*`; do
(cat $i | tr ' ' '\n' | sort | uniq > /tmp/line${i:10} &)
done
&是一个分隔符,因此是冗余的;
即,删除最终版本
time for i in `ls /tmp/chunk*`; do
{(cat $i | tr ' ' '\n' | sort | uniq > /tmp/line${i:10}) &};
done
用于i in/tmp/chunk*;执行tr''\n'/tmp/line${i:10}&done
以下答案之间的区别在于{}
是在当前shell上下文中执行的。()
创建了一个新的子shell,因此您不会保留变量赋值。谢谢@ICAndividBy0。。。但人们只能接受一个答案。尼斯尼克顺便说一句:D@Tathagata:您可以向上投票给海报10代表。这是因为∧都是命令分隔符:[如何获取此格式最后一个命令的pid?这将不起作用:“uniq_pid=$!”
for i in /tmp/chunk*; do tr ' ' '\n' <$i | sort -u > /tmp/line${i:10}& done