왜 모든 텍스트에 대해; 네 번 반복합니까?


9

이것은 버그입니까 아니면 기능입니까? 인용되지 않은 영숫자에
대해 발생하는 것 같습니다 .

GNU bash, 버전 4.1.5 실행

for alpha01234; do echo $((++i)); done

산출:

1
2
3
4

답변:


14

다음과 같이 for복합 명령 의 기능입니다 help for.

for: for NAME [in WORDS ... ] ; do COMMANDS; done

목록에서 각 구성원에 대한 명령을 실행하십시오.

for루프 아이템 목록의 각 구성원에 대한 일련의 명령을 실행한다. 경우 in WORDS ...;존재하지 않는, 다음 in "$@"가정한다. 각 요소에 대해 WORDS, NAME그 요소를 설정하고,이 COMMANDS실행된다.

따라서 인용 한 코드는 아마도 4 개의 매개 변수로 호출 된 스크립트에서 실행될 것입니다.


고마워요 ... 완전히 던져 버린 것은 명령 행에서 일어났다는 것입니다. 실제로 스크립트에서 시도하지 않았습니다 set a b c d. 내가 자주 사용하는 set터미널을 다시 시작하면 .. 테스트하기위한 스크립트에서 그런 식으로, 그것은 (차종 지금 감지) ... ... 중지
Peter.O

12

for x; do …에 대한 바로 가기입니다 for x in "$@"; do …: 그것은 위치 매개 변수 반복 할. 루프가 네 번 반복되면 네 개의 위치 매개 변수 ( $1~ $4) 가 있음을 의미합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.