Pourquoi ne puis-je utiliser nohup Unix avec Bash en boucle?
Question
Par exemple cette ligne échoue:
$ nohup for i in mydir/*.fasta; do ./myscript.sh "$i"; done > output.txt&
-bash: syntax error near unexpected token `do
Quelle est la bonne façon de le faire?
La solution
Parce que « nohup » attend une commande unique mot et ses arguments - et non une construction en boucle shell. Il faudrait utiliser:
nohup sh -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done >output.txt' &
Autres conseils
Vous pouvez le faire sur une seule ligne, mais vous voudrez peut-être de le faire demain aussi.
$ 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 &
Pour moi, la solution de Jonathan ne redirige pas correctement sortie.txt. Celui-ci fonctionne mieux:
nohup bash -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done' > output.txt &
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow