J'ai un script bash avec un code comme ceci:boucle de Bash se termine en boucle de façon inattendue sans montrer pourquoi
echo "EXECUTING TASK 1"
sort -r scripts/sh/test-list | while read fn; do
sh -vx scripts/sh/test-web-task.sh "$fn"
done
echo "EXECUTING TASK 2"
sort -r scripts/sh/test-unit-list | while read fn; do
sh -vx scripts/sh/test-unit-task.sh "$fn"
done
Dans le test-web-tâche et test unité tâche que j'ai quelques appels à Grails pour exécuter certains tests et ensuite faire des trucs d'emballage. Quelque chose comme ceci:
grails test-app $1
mv results backup/$1
Dans les fichiers scripts/sh/test-unité liste et scripts/sh/liste de test J'ai une liste des tests à exécuter. Quelque chose comme ceci:
Person
Book
La première boucle se brise sans courir toutes les lignes des scripts de fichiers/sh/test-liste et il commence à courir la deuxième boucle.
Comme vous pouvez le voir, j'ai ajouté -vx à sh pour voir quel pourrait être le problème. Mais je ne peux pas trouver ce que je fais mal.
Je pense que peut-être quelque chose dans scripts/sh/test-list se bloque, et briser la boucle. Si c'est le cas, je veux savoir ce qui se bloque, et je veux que la boucle continue sans interruption.
Pouvez-vous me donner un pointeur?
Avez-vous vérifié que la sortie de sort -r scripts/sh/test-list est? Vous pouvez peut-être remplacer sh -vx scripts/sh/test-web-task.sh par echo et voir si la sortie est la même que sort -r scripts/sh/test-list. –
Désolé de ne pas le dire, j'ai fait ce test. Avec l'écho fonctionne bien. – user2427