使用以下shell脚本导致错误放置()错误

时间:2013-08-14 09:53:08

标签: arrays shell for-loop sh

这是代码段。 在这里,我看到了错误的放置()的错误

#!/bin/sh 
#!/usr/bin/perl -w

# array declaration
arr= (one two three)  # seeing error here

# for loop
for (( i=0;i<4;i++ ))
do
    echo "\n $i : ${a[i]}"
done

2 个答案:

答案 0 :(得分:2)

这是一个小错误。

arr= (one two three)

应该是

arr=(one two three)

此外,您无法在\n中使用echo。如果您想使用printf,请使用\n

修复其余的错误,代码看起来像这样。

# array declaration
arr=(one two three)  

# for loop
for (( i=0;i<3;i++ ))
do
    printf "\n $((i+1)) : ${arr[i]}"
done
echo ""

答案 1 :(得分:1)

arr= (one two three)

让我们分解它的作用。

arr=

这部分为$arr分配一个空值(暂时,因为它在命令之前)。

(one two three)

此部分在带有参数onetwo的子shell中运行three,其前面指定的值为$arr

您是否意味着将这三个值分配给$arr中的数组?