Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I am trying to output the values of array element but I am getting weird output. Please have a look at it and help me solve it. Thank you.

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

Output:

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
share|improve this question

2 Answers 2

up vote 1 down vote accepted

declare is a bash shell builtin, and is not defined in the sh shell.

So, you must to run your script using the following command:

bash array.sh

Or add, the following shebang line at the start of your script:

#!/bin/bash

Be sure that your script is exectutable:

 chmod +x array.sh

And run it using the following command:

./array.sh
share|improve this answer
    
Thank you for the explanation! –  Robin Apr 27 at 0:12

Your script is correct, but type:

./array.sh

instead of sh array.sh

The difference between ./ and sh is explained here.

share|improve this answer
    
i'm getting permision denied. I even tried with sudo. –  Robin Apr 27 at 0:08
    
Its ok, I had to make it executable. Thank you. –  Robin Apr 27 at 0:10

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.