Saída estranha por declare e matriz

1

Eu estou tentando produzir os valores do elemento array, mas estou recebendo resultados estranhos. Por favor, dê uma olhada e me ajude a resolvê-lo. Obrigado.

n=2
declare -a myarray[$n]
myarray[0]=hey
myarray[1]=hello
myarray[2]=bye
for i in ${myarray[@]}
do
        echo $i
done

Saída:

robin@robin-VirtualBox:~/lx$ sh array.sh
array.sh: 2: array.sh: declare: not found
array.sh: 3: array.sh: myarray[0]=hey: not found
array.sh: 4: array.sh: myarray[1]=hello: not found
array.sh: 5: array.sh: myarray[2]=bye: not found
array.sh: 6: array.sh: Bad substitution
    
por Robin 27.04.2014 / 01:23

2 respostas

1

declare é um shell bash incorporado e não está definido no shell sh .

Portanto, você deve executar seu script usando o seguinte comando:

bash array.sh

Ou adicione a seguinte linha shebang no início do seu script:

#!/bin/bash

Certifique-se de que o seu script é exequível:

 chmod +x array.sh

E execute-o usando o seguinte comando:

./array.sh
    
por Radu Rădeanu 27.04.2014 / 02:11
2

Seu script está correto, mas digite:

./array.sh

em vez de sh array.sh

A diferença entre ./ e sh é explicada aqui .

    
por girardengo 27.04.2014 / 02:00