Почему я не могу использовать Unix nohup с Bash для петли?

StackOverflow https://stackoverflow.com/questions/3099092

  •  29-09-2019
  •  | 
  •  

Вопрос

Например, эта линия не удается:

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

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

Это было полезно?

Решение

Поскольку «NOHUP» ожидает команду одно слово и его аргументы - не конструкция петли оболочки. Вам придется использовать:

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 &

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top