중괄호 확장이 지원되지 않는 이유는 무엇입니까?


9

가새 확장을 시작하려면 구성을 수행해야합니까? 내가 실행할 때 mkdir {1..10}그냥 dir 명명을 만듭니다 {1..10}.


mkdir {1..10}나를 위해 일하면 10 개의 dirs가 생성됩니다.
suspectus

2
echo ${SHELL}이 질문에 유용한 답변을 얻을 수 있도록 추가 하는 것이 좋습니다.
dan

답변:


11

중괄호와 같은 확장 동안 {1,2}의 유래 csh70 년대 후반에, 그리고 그것의 방법을 발견 Bourne 씨는 같은 포탄 bash/ zsh/ pdksh80 년대 후반, 90 년대 초반의 {n1..n2}변형 이후 처음 와서 zsh1995 년 (2.6 beta4).

bash2004 년 (3.0)과 ksh932005 년 ( ksh93r) 에 복사했습니다 .

아마도 당신이 시도하고있는 쉘은 그 중 하나가 아니며 이전 버전의 bashksh93입니다.


우리는 그가 어떤 종류의 셰 뱅크 껍질을 사용해야하는지에 대해해야합니다. / 나 그것의 의심 #!/bin/sh...
폴몬

3
@polemon, 반드시 도움이되지는 않습니다. 예를 들어 일부 시스템 /bin/sh에서는 bash또는 ksh93입니다.
Stéphane Chazelas

2
실제로는 그렇게 생각합니다. 호출에 따라 쉘 은 역사적인 /bin/sh 역할 을합니다 sh(bash 매뉴얼 페이지가 말한 것입니다). ksh의 매뉴얼 페이지를 확인하지 않았지만 그에 따라 작동한다고 확신합니다.
polemon

1
@ user43312 : 왜 여전히 RH9를 사용하고 있습니까? 수년 동안 유지되지 않았습니다. AS Stephane은 최신 bash 버전의 기능이라고 썼습니다. 따라서 bash 버전에서 지원하지 않을 가능성이 큽니다. bash --version을 사용하여 버전을 확인할 수 있습니다. $ SHELL 변수를 확인하거나 ps를 실행하여 bash 쉘을 실행 중인지 확인하십시오. 이 기능을 사용하려면 zsh먼저 zsh 셸 ( )을 시작해보십시오 . 다른 해결 방법은 "mkdir $ (seq 1 10)"과 같은 것을 사용하는 것입니다.
Bram

1
@polemon 다른 쉘의 모방이 아닌 다른 쉘 의 시작 동작 (즉, 시작시 소스 파일).
Chris Down

4

{x..y}범위 괄호 확장은 bash 3.0-alpha로 구현됩니다. 우리와 자신을 돕기 위해 echo "$BASH_VERSION"출력을 보여주십시오 .

그 대답 은 다음 mkdir {1..10}과 같습니다. 이름으로 dir을 만들면 {1..10}bash version prior를 사용하고 bash 3.0-alpha있습니다. 이 경우 for 루프 구성을 다음과 같이 사용할 수 있습니다.

for ((i=1;i<=10; i++)); do mkdir "$i"; done


1

배쉬 버전을 확인하십시오 :

$ bash -version
GNU bash, version 4.1.7(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

또한 mkdir이상한 방식으로 별칭이 아닌지 확인하십시오 .

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