2015-04-23 58 views
1

我剛開始學習bash/shell以獲得樂趣,我正在嘗試創建一個應該接受用戶輸入的簡單腳本,該腳本應該是預構建數組的名稱,然後say該數組中的每個項目之間都有一個暫停。指定數組名稱的用戶輸入[bash]

這是我到目前爲止有:

#!/bin/sh 
array=("foo" "bar" "baz") 

read -p "Which array should I read to you? " answer 

for item in ${answer[@]} 
do 
    say "$item [[slnc 1000]]" 
done 

請讓我知道你是否能在正確的方向指向我!

+1

http://mywiki.wooledge.org/BashFAQ/006 –

+0

我試過了,它正在工作(mac env)。 暫停包括 – AdrieanKhisbe

+0

您是否將其另存爲文件?你用什麼擴展名?你是怎麼運行的?任何細節都會有幫助。此外,如果將空格添加到任何數組值中會發生什麼情況 - 它仍然可以工作嗎? –

回答

1

可以使用一個變量數組名這樣的訪問數組:

#!/bin/bash 

array=("foo" "bar" "baz") 
read -p "Which array should I read to you? " answer 

tmp="$answer"[@]; 

for item in "${!tmp}"; do 
    echo "$item [[slnc 1000]]" 
done 

然後用上面的腳本爲:

bash arr.sh 
Which array should I read to you? array 
foo [[slnc 1000]] 
bar [[slnc 1000]] 
baz [[slnc 1000]] 
+0

非常感謝anubhava,我感覺有一個過渡的步驟,我在某處失蹤,現在我學到了一些新東西! –

+1

不客氣,很高興幫助。 – anubhava