예기치 않은 표시 "(" 근처의 구문 오류 또는 잘못된 실행

예기치 않은 표시 "(" 근처의 구문 오류 또는 잘못된 실행

터미널을 통해 X 디렉터리에서 작업을 시도하고 있지만 Y 디렉터리에서는 작업을 수행하지 않고 있습니다. 내가 할 때

cd /mnt/dir/ && 
for i in !(dira|dirb|dird)/; do echo "$i"; done && 
cd y/ && for i in !(dirz)/; do echo "$i"; done

터미널에서는 모든 것이 괜찮지만 .sh 파일에 넣고 실행하려고 하면 또는 을 얻고 syntax error near unexpected token ( , 이스케이프하면 (해당 부분 |만 출력으로 가져옵니다 (예 : : ).for!(dira|dirb|dird)/

.sh 파일이나 .bashaliases 파일의 별칭에서 실행되도록 하려면 이 문제를 어떻게 해결해야 합니까?

답변1

확장된 글로빙 모드를 사용하고 있습니다. 이것이 스크립트에서 작동하려면 다음을 확인하십시오.

  1. bash스크립트 실행을 위한
  2. extglob스크립트에서 셸 옵션을 활성화합니다.

extglob다음 명령을 사용하여 셸 옵션을 활성화 할 수 있습니다.

shopt -s extglob

스크립트 소스에서

관련 정보