%20em%20um%20loop%20for%3F.png)
Eu gostaria de encontrar um equivalente de
cmd 1 && cmd 2 && ... && cmd 20
mas com comandos expressos dentro de um for
loop como
for i in {1..20}
do
cmd $i
done
O que você sugeriria mudar na segunda expressão para encontrar um equivalente da primeira?
Responder1
O equivalente à sua sequência original seria:
for i in {1..20}
do
cmd $i || break
done
A diferença com a resposta de Amit é que o script não será encerrado, ou seja, executará comandos potenciais que podem seguir a sequência/loop. Observe que o status de retorno de todo o loop sempre será verdadeiro com minha sugestão; isso pode ser corrigido se for relevante no seu caso.
Responder2
Se você quiser uma solução suja de uma linha, poderá criar um comando e enviá-lo para o bash.
echo "cmd "{1..20}" &&" : | bash
Responder3
Você pode sair do loop se um deles falhar
for i in {1..55}; do
if ! cmd $i; then
exit 1
fi
done
Responder4
É assim que executo minhas tarefas no terminal sem usar&&
for i in google.com yahoo.com;do ping -c1 $i;echo $i;done
Semelhante a você tem que colocar este comando em um script
for i in google.com yahoo.com
do echo $i;ping -c1 $i;
done
Ambos dando a mesma saída para mim
google.com PING google.com (172.217.26.174) 56(84) bytes de dados. 64 bytes de google.com (172.217.26.174): icmp_seq=1 ttl=56 time=259 ms
--- estatísticas de ping do google.com --- 1 pacote transmitido, 1 recebido, 0% de perda de pacote, tempo 0 ms 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) bytes de dados. 64 bytes de yahoo.com (98.138.253.109): icmp_seq=1 ttl=51 tempo=398 ms
--- estatísticas de ping do yahoo.com --- 1 pacote transmitido, 1 recebido, 0% de perda de pacote, tempo 0 ms rtt min/avg/max/mdev = 398,974/398,974/398,974/0,000 ms