Je travaille sur un script shell qui ne fait certains changements sur un fichier txt que s'il existe, mais cette boucle de test ne fonctionne pas, je me demande pourquoi ? Merci !
while [ ! -f /tmp/list.txt ] ;
do
sleep 2
done
Je travaille sur un script shell qui ne fait certains changements sur un fichier txt que s'il existe, mais cette boucle de test ne fonctionne pas, je me demande pourquoi ? Merci !
while [ ! -f /tmp/list.txt ] ;
do
sleep 2
done
Quand tu dis "ça ne marche pas", comment sais-tu que ça ne marche pas ?
Vous pouvez essayer de déterminer si le fichier existe réellement en ajoutant :
while [ ! -f /tmp/list.txt ]
do
sleep 2 # or less like 0.2
done
ls -l /tmp/list.txt
Vous pouvez également vous assurer d'utiliser un shell Bash (ou associé) en tapant « echo $ SHELL ». Je pense que CSH et TCSH utilisent une sémantique légèrement différente pour cette boucle.
Si vous êtes sous linux et que vous avez installé inotify-tools, vous pouvez le faire :
file=/tmp/list.txt
while [ ! -f "$file" ]
do
inotifywait -qqt 2 -e create -e moved_to "$(dirname $file)"
done
Cela réduit le retard introduit par le sommeil tout en sondant toutes les "x" secondes. Vous pouvez ajouter d'autres événements si vous prévoyez qu'ils sont nécessaires.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.