
터미널을 통해 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
확장된 글로빙 모드를 사용하고 있습니다. 이것이 스크립트에서 작동하려면 다음을 확인하십시오.
bash
스크립트 실행을 위한extglob
스크립트에서 셸 옵션을 활성화합니다.
extglob
다음 명령을 사용하여 셸 옵션을 활성화 할 수 있습니다.
shopt -s extglob
스크립트 소스에서