Nohup ne fonctionne pas correctement avec bash for loop
J'ai essayé d'utiliser nohup avec bash for loop et je suis tombé sur ce post ici qui m'a été utile et m'a donné une idée, mais ma commande ne fonctionne toujours pas correctement. Ce que j'ai en ce moment ressemble à:
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' &
lorsque je l'exécute, le travail échoue à l'exception suivante que le chemin d'entrée n'existe pas et me montre le chemin comme:
/some/path/part-001{0..9}*
Comment puis-je le remplacer $ipar la valeur réelle de i et non par la chaîne {0..9}?
Réponses
Le problème n'a rien à voir avec nohup.
L'expansion des accolades est un bashisme . Votre code s'exécute shet ne se développe pas {0..9}. Utilisez à la bashplace de sh.
Si vous souhaitez toujours utiliser sh, alors for i in $(seq 0 9); do ….
(Presque toujours, il faut double-citer $(), mais dans ce cas, ne pas citer est la bonne chose.)