Почему я не могу использовать Unix Nohup с циклом Bash For? - PullRequest
28 голосов
/ 23 июня 2010

Например, эта строка не работает:

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

Как правильно это сделать?

Ответы [ 3 ]

69 голосов
/ 23 июня 2010

Поскольку nohup ожидает команду из одного слова и ее аргументы, а не конструкцию цикла оболочкиВы должны использовать:

nohup sh -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done >output.txt' &
9 голосов
/ 23 июня 2010

Вы можете сделать это в одной строке, но, возможно, вы захотите сделать это и завтра.

$ 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 &
4 голосов
/ 27 февраля 2014

Для меня решение Джонатана неправильно перенаправляет на output.txt.Этот работает лучше:

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

...