声明和数组的奇怪输出

声明和数组的奇怪输出

我正在尝试输出数组元素的值,但得到的输出很奇怪。请看一下并帮我解决。谢谢。

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

输出:

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

答案1

declare狂欢shell 内置,并且未在壳。

因此,您必须使用以下命令运行脚本:

bash array.sh

或者添加以下内容舍邦脚本开头的行:

#!/bin/bash

确保您的脚本可执行:

 chmod +x array.sh

并使用以下命令运行它:

./array.sh

答案2

你的脚本是正确的,但是输入:

./array.sh

代替sh array.sh

./和之间的区别sh解释这里

相关内容