Comando:
ls /etc/pve/lxc/*([0-9]).conf
Trabalhando no console:
- Resultado: arquivo encontrado!
/etc/pve/lxc/107.conf
mas não no roteiro:
- #!/bin/bash
- Resultado: ERRO
syntax error near unexpected token `('
ls /etc/pve/lxc/*([0-9]).conf
Então mascarei os colchetes no script:
ls /etc/pve/lxc/*\([0-9]\).conf
- Resultado: Nenhum arquivo encontrado
ls: cannot access '/etc/pve/lxc/*([0-9]).conf': No such file or directory
Responder1
A expressão *([0-9]).conf
é do estilo KSHglobo estendido. O recurso é habilitado por padrão para shells bash interativos, mas para usá-lo em um script bash ele deve ser habilitado explicitamente usando
shopt -s extglob
Veja tambémExpansão curinga que funciona na linha de comando, mas não em um script bash
Responder2
A informação que você não fornece é qual interpretador de comando é usado no script. Isto é indicado pelo shebang, ou seja, a primeira linha (por exemplo. #/bin/sh
).
No Ubuntu, o console por padrão executa o bash como shell interativo. Se o seu script usar outro interpretador de comandos, por exemplo, /bin/sh, a sintaxe específica do bash não funcionará.