Como executar um script bash a partir de um script sh (traço)?

1

Eu tenho um script sh (shebang #!/bin/sh ) ( sh.sh ) que chama um sub-script bash (shebang #!/bin/bash ):

. "some-path/bash.sh"

No script bash eu tenho uma declaração de um array associativo: declare -A properties , obtendo assim o erro declare: not found .

É óbvio porque declare não é encontrado porque o script pai é um script sh e não é um bash.

Existe uma maneira de forçar a sintaxe do bash?

Outra maneira é abrir um novo shell, mas é problemático porque o objetivo do subíndice é definir variáveis a serem usadas no script pai. Sub-shells não devem estar mexendo com a variável dos pais.

Pai (sh.sh):

#!/bin/sh
. "some-path/bash.sh"

Filho (bash.sh):

#!/bin/bash
declare -A properties

Uso que eu estava tentando:

./sh.sh
    
por AlikElzin-kilaka 18.07.2016 / 18:01

2 respostas

2

Não forneça o script ( source script ou . script ).

Em vez disso, basta executar normalmente script .

    
por 18.07.2016 / 18:05
1

Em vez de executar o script pai como: ./sh.sh , executei-o usando bash: bash sh.sh . Trabalhou.

Eu tenho uma suposição escondida de que sh é um subconjunto do bash. Não tenho certeza se está correto, mas funcionou.

    
por 18.07.2016 / 18:04