2015-01-07 3 views
7

이의 상상하자 그 내 서버에, 나는 다음과 같은 파일이 있습니다배쉬 스크립트와 정규식 문제

[email protected]:/var/log/foo$ ls 
fooFile1 fooFile2 logFile logFile.1 logFile.2 

내가 모든 파일하지만 로그 파일을 포함하는 아카이브를 창조하고 싶었다. *.

[email protected]:~$ tar -czf foo.tar.gz /var/log/foo/!(logFile.*)

을 그리고 그것을 잘 작동합니다 : 그래서 명령을 함께했다! 그러나 동일한 작업을 수행하는 스크립트를 만들려고 할 때

#!/bin/bash 

tar -czf foo.tar.gz /var/log/foo/!(logFile.*) 

나는 다음과 같은 오류 건너 온을 :

./test.sh: line 3: syntax error near unexpected token '(' 
./test.sh: line 3: 'tar -czf foo.tar.gz /var/log/foo/!(logFile.*)' 

관련 (I 대신 ls를 사용하여 동일한 문제를 충족 타르되지 않는 문제 tar)

이 오류의 출처를 알 수 없습니다. 아무도 내가 틀린 곳을 말할 수 있습니까?

은 오두막 아래 장소

답변

7

우분투 12.04에이 줄을 만난 :

shopt -s extglob 

은 스크립트에서 확장 된 글로브 옵션을 활성화 할 수 있습니다.

!(logFile.*) 그것은이 옵션을 행동의 차이의 원인 대화 형 쉘에서 기본적으로 활성화되어 있음을 명시 적으로 지적 가치가 extglob

+4

을 가능하게 필요로 확장 글로브 패턴입니다. –

+1

더 자세히 살펴 봐야합니다. 둘 다 감사합니다! –