%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%B0%94%EA%BE%B8%EB%82%98%EC%9A%94%3F.png)
나는 동등한 것을 찾고 싶다
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.000 ms 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.000ms