我有一个bash脚本(array_test.sh),如下所示:
ARRAY=()
v="FOO"
ARRAY+=(${v})
v="BAR"
ARRAY+=(${v})
echo ${ARRAY[@]}
echo ${#ARRAY[@]}
echo ${ARRAY[0]}
当我直接运行该脚本(./array_test.sh)时,我得到如下结果:
FOO BAR
2
FOO
但是当我采购它(来源./array_test.sh)时,最后一个FOO
丢失了:
FOO BAR
2
这是我的小脚本中的错误还是错误?
答案 0 :(得分:2)
在ZSh中,也许还有其他一些shell,数组的索引是从1而不是从0开始。
所以问题很可能是你的命令行shell不是Bash。当您在自己的进程中将脚本作为可执行文件运行时,它在Bash中运行(或者像Bash一样运行的shell);当你在命令行shell中source
时,它在ZSh(或者像ZSh那样运行的shell)中运行。
(上面提到Barmar的评论,现在已删除了,这让我想到了这一点。)