나는 동등한 것을 찾고 싶다.
cmd 1 && cmd 2 && ... && cmd 20
for
그러나 다음과 같이 루프 내에서 표현된 명령을 사용하십시오.
for i in {1..20}
do
cmd $i
done
첫 번째 표현식과 동등한 것을 찾기 위해 두 번째 표현식에 어떤 변경을 제안하시겠습니까?
답변1
원래 시퀀스와 동등한 것은 다음과 같습니다.
for i in {1..20}
do
cmd $i || break
done
Amit의 답변과의 차이점은 스크립트가 종료되지 않고 시퀀스/루프를 따를 수 있는 기본 명령을 실행하려고 한다는 것입니다. 내 제안에 따르면 전체 루프의 반환 상태는 항상 true이며, 귀하의 사례와 관련된 경우 수정될 수 있습니다.
답변2
더티 한 줄 솔루션을 원한다면 명령을 생성하여 bash로 보낼 수 있습니다.
echo "cmd "{1..20}" &&" : | bash
답변3
그 중 하나가 실패하면 루프에서 벗어날 수 있습니다.
for i in {1..55}; do
if ! cmd $i; then
exit 1
fi
done
답변4
이것이 내가 사용하지 않고 터미널에서 작업을 실행하는 방법입니다.&&
for i in google.com yahoo.com;do ping -c1 $i;echo $i;done
이 명령을 스크립트에 넣어야 하는 것과 같은 것
for i in google.com yahoo.com
do echo $i;ping -c1 $i;
done
둘 다 나에게 동일한 결과를 제공합니다
google.com PING google.com (172.217.26.174) 56(84)바이트의 데이터입니다. google.com(172.217.26.174)의 64바이트: icmp_seq=1 ttl=56 time=259 ms
--- google.com ping 통계 --- 1개의 패킷 전송, 1개의 패킷 수신, 0% 패킷 손실, 시간 0ms rtt min/avg/max/mdev = 259.794/259.794/259.794/0.000ms yahoo .com PING yahoo.com (98.138.253.109) 56(84)바이트의 데이터입니다. yahoo.com(98.138.253.109)의 64바이트: icmp_seq=1 ttl=51 time=398 ms
--- yahoo.com 핑 통계 --- 1 패킷 전송, 1 패킷 수신, 0% 패킷 손실, 시간 0ms rtt 최소/평균/최대/mdev = 398.974/398.974/398.974/0.000 ms