Why can't I use Unix Nohup with Bash For-loop? Why can't I use Unix Nohup with Bash For-loop? linux linux

Why can't I use Unix Nohup with Bash For-loop?


Because 'nohup' expects a single-word command and its arguments - not a shell loop construct. You'd have to use:

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


You can do it on one line, but you might want to do it tomorrow too.

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


For me, Jonathan's solution does not redirect correctly to output.txt. This one works better:

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