2016-09-08 37 views
1

我有一個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

如果你把'#!/ bin中/ bash'作爲第一行是否改變劇本? – Barmar

+0

與你的問題沒有直接關係,但僅供參考,你誤解了Bash中的引號:當他們完全沒有做任何事情時,你會包括它們,當它們有潛在用途時將它們排除在外。如果你使用Google Bash引號,你會發現很多信息。 – ruakh

+0

我無法重現該行爲。試用bash 3.2.57和4.2.37。 – Barmar

回答

2

在zsh的,也許還有一些其他的殼,陣列1,而不是從0

索引所以,問題很有可能是您的命令行shell不是猛砸。當你在自己的進程中將腳本作爲可執行文件運行時,它將在Ba​​sh(或者像Bash那樣運行的shell)中運行;當你在source中 - 它在你的命令行shell中,它運行在ZSh(或者像ZSh那樣運行的shell)中。

(帽尖到Barmar的上述評論,現在刪除了,這讓我在這樣的思路。)

相關問題