Подтвердить что ты не робот

Почему я не могу использовать Unix Nohup с Bash For-loop?

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

Вы также можете записать его как

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