Domanda

Ad esempio questa riga non riesce:

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

Qual è il modo giusto per farlo?

È stato utile?

Soluzione

Poiché 'nohup' attende un comando singolo parola e suoi argomenti - non un costrutto di ciclo shell. Dovreste usare:

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

Altri suggerimenti

È possibile farlo su una sola riga, ma si potrebbe desiderare di farlo anche domani.

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

Per me, la soluzione di Jonathan non reindirizza correttamente output.txt. Questo funziona meglio:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top