¿Por qué no puedo usar Unix nohup con Bash Para bucle?
Pregunta
Por ejemplo esta línea falla:
$ nohup for i in mydir/*.fasta; do ./myscript.sh "$i"; done > output.txt&
-bash: syntax error near unexpected token `do
¿Cuál es la forma correcta de hacerlo?
Solución
Debido 'nohup' espera un comando de una sola palabra y sus argumentos - no es una construcción de lazo shell. Habría que utilizar:
nohup sh -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done >output.txt' &
Otros consejos
Puede hacerlo en una sola línea, pero es posible que desee hacerlo mañana también.
$ 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 &
Para mí, la solución de Jonathan no redirige correctamente a salida.txt. Esto funciona mejor:
nohup bash -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done' > output.txt &
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow