범위가 {# .. #} 인 루프 for Bash


17

{# .. #}은 Python의 range ()와 유사하게 일련의 숫자 또는 문자를 생성합니다. echo {1..5}명령 줄에서 명령 을 실행하면 다음이 있습니다.

1 2 3 4 5

대신 다음 bash 스크립트가 예상대로 작동하지 않습니다.

for i in {1..3};
do
    echo "Iteration $i"
done

인쇄합니다 :

Iteration {1..3}

왜?
* 사용할 수는 seq있지만 구식이라고 읽었습니다 ( http://www.cyberciti.biz/faq/bash-for-loop/ )


스크립트가 "sh"명령으로 실행되면 ( "bash"를 사용하여 시도)이 오류가 발생합니다.
Shake0

답변:


22

코드 (터미널에 복사 붙여 넣기)를 시도했지만 게시 한 것과 다른 결과가 생성되었습니다.

for i in {1..3};
do
    echo "Iteration $i"
done
#---OUTPUT BELOW---
Iteration 1
Iteration 2
Iteration 3

bash 버전 4.2.10 (1)-릴리스 와 함께 Linux Mint 12 Lisa (Ubuntu에서 파생 됨)를 사용하는 Im


2
당신이 맞아요! 나는 sh와 bash가 같은 것이라고 생각했다.
Shake0

1
아니, sh와 bash는 매우 다르다 ... 배쉬는 쉬 둘 다 호환성의 좋은 학위를 가지고 있지만, 그것은 :) 쉬의 어깨에 만들어진 것보다 더 많은 능력, 그들은 또한 차이가
zipizap

{{i..j}, {l..m}}에서 var와 같이 중첩 된 목록을 수행 할 수 있습니다. echo $ var; 1 2 3 7 8 9
brown

일부 배포판에서는 /bin/sh실제로 bash를 가리키고 있으며 데비안과 우분투에서는 일반적으로 /bin/dashPOSIX와 호환되지만 Bash와 동일한 구문을 모두 지원하지는 않습니다.
dragon788
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.