为什么我不能用Bash For-Loop使用Unix Nohup?

例如,这一行失败:

$ nohup for i in mydir/*.fasta; do ./myscript.sh "$i"; done > output.txt& -bash: syntax error near unexpected token `do 

什么是正确的方法来做到这一点?

因为'nohup'期望单字命令及其参数 – 不是shell循环结构。 你必须使用:

 nohup sh -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done >output.txt' & 

你可以在一行上做,但是你明天也可以这样做。

 $ cat loopy.sh #!/bin/sh # a line of text describing what this task does for i in mydir/*.fast ; do ./myscript.sh "$i" done > output.txt $ chmod +x loopy.sh $ nohup loopy.sh & 

对我来说,乔纳森的解决方案不会正确地重定向到output.txt。 这个更好用:

nohup bash -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done' > output.txt &

你也可以把它写成

 for i in mydir/*.fasta; do nohup ./myscript.sh "$i" > output.txt; done &