for ((…)) {…;}가 유효한 쉘 구문입니까? 어느 껍질에서?


답변:


30

{ ...; }70 년대 후반 Unix V7의 Bourne 쉘의 첫 번째 버전 do ...; done에서 for루프 대신에 이미 허용되었습니다 ( 소스 코드 참조 ).

모든 ksh(모두 본 셸 유래의 원래하고 ksh93의 재기록) pdksh¹ (유도체), bash(1989 년에 시작부터) 및 zsh이를지지한다. 나는 ash파생 상품을 모른다 . POSIX 표준으로 작성된 yash것이 아닙니다 yash.

zsh, 지원은 1991 년 2.0 추가되었지만 된 보른 구문을 넘어 대부분의 구조에 대한 짧은 형태의 새로운 범위의 일환으로. 그것은 단지의 for i in 1 2; { ...; }그것의, for i in 1 2; any-command(및 그 변형). 그리고이 설명되어 있습니다도입 이후되었습니다 .

AFAIK는 옆에 zsh만 (모두 문서로 된 pdksh forselect).

에 대해서는 ((init; condition; action))에서 제공 형태 ksh93에 의해 복사 된 zshbash.

어느 쪽이 ((...)){ ...; }대신에이 do ...; donePOSIX를하지 않습니다.

Bash for 루프에서 "do"키워드의 목적은 무엇입니까?를 참조하십시오 . 더 많은 for루프 양식.


¹ 이전 버전이나 그 기반이되는 Forsyth 쉘이 아닙니다. 그것은 1994 년 5.1.1에 추가되었고 아마도 그것이 문서화 된 이유를 설명 할 것입니다


1
Bourne 은 70 년대 소스 코드에서 c 프리 프로세서 사용을 완전히 수용했습니다.
디지털 외상
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.