Nohup non funziona correttamente con bash for loop
Ho provato a usare nohup con bash for loop e mi sono imbattuto in questo post qui che è stato utile e mi ha dato un'idea ma il mio comando non funziona ancora correttamente. Quello che ho adesso sembra:
nohup sh -c 'for i in {0..9}; do spark-submit --class some.Code /some/Jar.jar --input_path /some/path/part-001"$i"* > test_log.log; done' &
quando lo eseguo il lavoro fallisce con la seguente eccezione che il percorso di input non esiste e mi mostra il percorso come:
/some/path/part-001{0..9}*
Come posso fare in modo che questo $ivenga sostituito con il valore effettivo di i e non la stringa {0..9}?
Risposte
Il problema non ha nulla a che fare con nohup.
L'espansione delle parentesi graffe è un bashismo . Il tuo codice viene eseguito shche non si espande {0..9}. Usa bashinvece di sh.
Se vuoi ancora usare sh, allora for i in $(seq 0 9); do ….
(Quasi sempre si dovrebbero virgolette doppie $(), ma in questo caso non citare è la cosa giusta.)