Se você executar um script Bash com o shell Bourne ( sh
), o shebang ( #!/bin/bash
) será ignorado, portanto sh
executará o script, não bash
. Você precisa executar o script assim:
bash _myscript.sh
Como resolver o problema da versão do Bash no meu Ubuntu?
Estou tentando executar um script de shell no meu terminal VPN do Ubuntu.
Minha versão do Bash é:
GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu)
Meu script de shell é:
#!/bin/bash
...
...
Eu dei permissões para isso da seguinte forma:
chmod +x _myscript.sh
ex -sc $'%s/\r$//e|x' _myscript.sh
sh _myscript.sh
Eu recebo este erro:
syntax error in conditional expression: unexpected token '(‘
que é por causa da versão mais baixa do Bash, descobri depois de pesquisar.
A solução que encontrei foi adicionar esta linha após a declaração Bash:
[code language="bash"] shopt -s extglob [/code]
Eu preciso saber onde no script eu preciso dar a linha acima.
Eu tentei apenas após #!/bin/bash
no meu script, mas ainda recebo o mesmo erro.
Se você executar um script Bash com o shell Bourne ( sh
), o shebang ( #!/bin/bash
) será ignorado, portanto sh
executará o script, não bash
. Você precisa executar o script assim:
bash _myscript.sh