Vorrei trovare un equivalente di
cmd 1 && cmd 2 && ... && cmd 20
ma con comandi espressi in un for
ciclo come
for i in {1..20}
do
cmd $i
done
Cosa suggeriresti di cambiare nella seconda espressione per trovare un equivalente della prima?
Vorrei trovare un equivalente di
cmd 1 && cmd 2 && ... && cmd 20
ma con comandi espressi in un for
ciclo come
for i in {1..20}
do
cmd $i
done
Cosa suggeriresti di cambiare nella seconda espressione per trovare un equivalente della prima?
Risposte:
L'equivalente alla sequenza originale sarebbe:
for i in {1..20}
do
cmd $i || break
done
La differenza con la risposta di Amit è che lo script non verrà chiuso, ovvero eseguirà potenziali comandi che potrebbero seguire la sequenza / il ciclo. Nota che lo stato di restituzione dell'intero loop sarà sempre vero con il mio suggerimento, questo potrebbe essere risolto se pertinente nel tuo caso.
Se vuoi una soluzione sporca a una riga, puoi creare un comando e inviarlo a bash.
echo "cmd "{1..20}" &&" : | bash
Puoi uscire dal circuito se uno di loro fallisce
for i in {1..55}; do
if ! cmd $i; then
exit 1
fi
done
break
legale lì? Sono abbastanza sicuro che l' if
affermazione non interferisca ..
Questo è il modo in cui eseguo i miei compiti nel terminale senza usare &&
for i in google.com yahoo.com;do ping -c1 $i;echo $i;done
Simile a te devi inserire questo comando in uno script
for i in google.com yahoo.com
do echo $i;ping -c1 $i;
done
Entrambi mi danno lo stesso risultato
google.com PING google.com (172.217.26.174) 56 (84) byte di dati. 64 byte da google.com (172.217.26.174): icmp_seq = 1 ttl = 56 time = 259 ms
--- statistiche ping google.com --- 1 pacchetti trasmessi, 1 ricevuto, 0% perdita pacchetti, tempo 0ms rtt min / avg / max / mdev = 259.794 / 259.794 / 259.794 / 0.000 ms yahoo.com PING yahoo.com ( 98.138.253.109) 56 (84) byte di dati. 64 byte da yahoo.com (98.138.253.109): icmp_seq = 1 ttl = 51 tempo = 398 ms
--- statistiche ping yahoo.com --- 1 pacchetti trasmessi, 1 ricevuto, 0% perdita pacchetti, tempo 0ms rtt min / avg / max / mdev = 398.974 / 398.974 / 398.974 / 0.000 ms
cmd && cmd