¿Cómo reemploop y (&&) en un ciclo for?

Me gustaría ejecutar encontrar un equivalente de

cmd 1 && cmd 2 && ... && cmd 20 

Pero con commands expresados ​​con un ciclo for :

 for i in {1..20} do cmd $i done 

¿Qué sugieres que cambies en la segunda expresión para encontrar un equivalente de la primera (poner commands en set)?

El equivalente a tu secuencia original sería:

 for i in {1..20} do cmd $i || break done 

La diferencia con la respuesta de Amit es que el script no saldrá, es decir, ejecutará commands potenciales que podrían seguir a la secuencia / bucle. Tenga en count que el estado de devolución de todo el ciclo siempre será cierto con mi sugerencia, esto podría ser corregido si es relevante en su caso.

Si desea una solución sucia de una sola línea, puede crear un command y enviarlo a bash.

 echo "cmd "{1..20}" &&" : | bash 

Puedes salirte del loop si uno de ellos falla

 for i in {1..55}; do if ! cmd $i; then exit 1 fi done 

Así es como ejecuto mis tareas en la terminal sin usar &&

  for i in google.com yahoo.com;do ping -c1 $i;echo $i;done 

Similar a usted tiene que poner este command en una secuencia de commands

  for i in google.com yahoo.com do echo $i;ping -c1 $i; done 

Ambos me dieron la misma salida

google.com PING google.com (172.217.26.174) 56 (84) bytes de datos. 64 bytes de google.com (172.217.26.174): icmp_seq = 1 ttl = 56 time = 259 ms

— google.com ping statistics — 1 package transmitido, 1 recibido, 0% de pérdida de package, time 0ms rtt mín / avg / máximo / mdev = 259.794 / 259.794 / 259.794 / 0.000 ms yahoo.com PING yahoo.com ( 98.138.253.109) 56 (84) bytes de datos. 64 bytes de yahoo.com (98.138.253.109): icmp_seq = 1 ttl = 51 time = 398 ms

— statistics de ping yahoo.com — 1 package transmitido, 1 recibido, 0% de pérdida de package, time 0ms rtt mín / avg / máximo / mdev = 398.974 / 398.974 / 398.974 / 0.000 ms