¿Por qué no puedo usar Unix Nohup con Bash For-loop?

Por ejemplo, esta línea falla:

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

¿Cuál es la forma correcta de hacerlo?

Porque ‘nohup’ espera un comando de una sola palabra y sus argumentos, no una construcción de bucle de shell. Deberías usar:

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

Puedes hacerlo en una línea, pero es posible que también quieras hacerlo mañana.

 $ 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 & 

Para mí, la solución de Jonathan no se redirige correctamente a output.txt. Este funciona mejor:

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

También podrías escribirlo como

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