명령 줄에서 for 루프를 만드는 방법은 무엇입니까?

간단한 for loop

#!/bin/bash for i in `seq 1 10`; do echo $i done 

bash 스크립트의 AFAIK 세미콜론은 셸이 현재 명령을 동 기적으로 실행 한 다음 다음 명령으로 이동하도록합니다. Enter 키를 누르면 “다음 명령을 입력 할 수없고 버퍼를 즉시 비울 수 없다는 점만 제외하면 문자 그대로 동일합니다.

그래서 쉘이 다음 줄을 “해석 할 수없는 이유

for i in `seq 1 10`; do; echo $i; done 

for loop 실제로 작동합니까?

Answer

iv의 for 루프 구문 id = “5afd81afc1″>

매뉴얼 페이지는

for name [ [ in [ word ... ] ] ; ] do list ; done 

세미콜론은 bash 매뉴얼 페이지 : “명령을 구분하기 위해 하나 이상의 줄 바꿈 시퀀스가 세미콜론 대신 목록에 나타날 수 있습니다.”

그러나 그 반대는 사실이 아닙니다. 임의로 줄 바꿈 세미콜론으로. 위의 구문 규칙을 준수하고 do 뒤에 추가 세미콜론을 삽입하지 않는 한 여러 줄 스크립트를 한 줄로 변환 할 수 있습니다.

for i in `seq 1 10`; do echo $i; done 

댓글

  • @ dr01이 지적했듯이 최종 스크립트가 잘못되었습니다. .
  • @jake, 또한 do 뒤에 세미콜론을 제거해야 함을 나타냅니다. 또한이 답변은`do ' 뒤에 세미콜론을 제거해야하는 이유 를 설명합니다.
  • 만약 $i는 파일 이름의 일부 여야합니까? 큰 따옴표가 필요합니까?
  • filename_${i} 다음
  • @ user4556274 구문에 따라 " for i do; done "도 작동합니다. 왜 ' 아닙니까?

답변

세미콜론 do 이후는 오류이며 존재하지 않아야합니다.

다음은 올바르게 작동합니다.

for i in `seq 1 10`; do echo $i; done 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다