Ho uno script di bash che passa attraverso un elenco di ip e li squilla uno per uno. Se lo stato di uscita per ogni ping è 0, echo che il nodo è attivo, altrimenti il nodo è inattivo. Sono in grado di farlo funzionare perfettamente, ma quando lo script di bash termina lo stato di uscita è sempre 0.Bash exit status quando si utilizza while loop
Quello che sto cercando di ottenere è per esempio su 5 ip se il terzo fallisce, per continuare attraverso l'elenco e controllare il resto, ma una volta che lo script termina lanciare uno stato di uscita diverso da 0 ed emettere quale ip ha fallito.
cat list.txt | while read -r output
do
ping -o -c 3 -t 3000 "$output" > /dev/null
if [ $? -eq 0 ]; then
echo "node $output is up"
else
echo "node $output is down"
fi
done
grazie in anticipo!
Questo sembra fare ciò che stavo cercando. Non ero a conoscenza del primo numero e capisco. Grazie! – user2683183
'cmd; se [$? -eq 0]; allora è quasi ** sempre ** meglio sostituito con 'se cmd; then'. –