명령:
ls /etc/pve/lxc/*([0-9]).conf
콘솔에서 작업:
- 결과: 파일을 찾았습니다!
/etc/pve/lxc/107.conf
하지만 스크립트에는 없습니다:
- #!/bin/bash
- 결과: 오류
syntax error near unexpected token `('
ls /etc/pve/lxc/*([0-9]).conf
그런 다음 스크립트에서 대괄호를 마스킹했습니다.:
ls /etc/pve/lxc/*\([0-9]\).conf
- 결과: 파일을 찾을 수 없습니다.
ls: cannot access '/etc/pve/lxc/*([0-9]).conf': No such file or directory
답변1
표현은 *([0-9]).conf
KSH 스타일입니다확장된 글로브. 이 기능은 대화형 bash 셸에서 기본적으로 활성화되어 있지만 bash 스크립트에서 사용하려면 다음을 사용하여 명시적으로 활성화해야 합니다.
shopt -s extglob
답변2
제공하지 않은 정보는 스크립트에서 어떤 명령 해석기가 사용되는지입니다. 이는 shebang, 즉 첫 번째 줄(예: #/bin/sh
)로 표시됩니다.
Ubuntu에서 콘솔은 기본적으로 bash를 대화형 셸로 실행합니다. 스크립트가 다른 명령 해석기를 사용하는 경우(예: /bin/sh) bash 관련 구문은 작동하지 않습니다.