누군가 내 스크립트에 나타나는 이 오류를 설명해 주실 수 있나요?

누군가 내 스크립트에 나타나는 이 오류를 설명해 주실 수 있나요?

저는 모든 도트 파일을 Github 저장소로 설정한 폴더에 추가한 다음 매일 밤 푸시하기 위해 크론 작업으로 설정할 수 있는 스크립트를 만들려고 합니다. 내 스크립트는 다음과 같습니다.

cp ~/.!(|.|ssh|bash_logout|bash_history) ~/dotfiles

git add .

git commit -m "Test commit"

git push origin master

다음 오류가 발생합니다.

./update_dotfiles.sh: line 3: syntax error near unexpected token `('
./update_dotfiles.sh: line 3: `cp ~/.!(|.|ssh|bash_logout|bash_history) ~/dotfiles'

명령을 실행하면 잘 실행되지만 쉘 스크립트의 일부로 실행하면 오류가 발생합니다. 스크립트가 bash를 실행 중입니다.

답변1

bash 쉘을 지정해야 합니다.셰르본이렇게 하려면 다음을 수행하십시오.

#!/bin/bash

bash가 shebang 없이 또는 shebang을 사용하여 스크립트를 실행할 #!/bin/shPOSIX 모드여기에는 몇 가지 제한 사항이 있습니다.

또한 와일드카드 패턴을 이해할 수 있도록 extglob셸 옵션을 활성화해야 합니다 .bash!(...)

shopt -s extglob

관련 정보