2016-04-03 72 views
1

使用read -p "ENTER 1 - 5 WORDS" v1 v2 v3 v4 v5允許我通過在命令行上鍵入它們來將值分配給每個變量v。這是最實用的方法嗎?假設我想分配更多的變量。我會以同樣的方式列出每個人嗎?我試過read -p "ENTER 1-20 WORDS" {v1..v20}哪個沒有用。如何從用戶輸入分配多個bash變量

回答

2

v不是序列的一部分。試試這個:

read -p "ENTER 1-20 WORDS" v{1..20} 
1

你可能想用read -a讀入一個數組:

$ read -a arr -p "Enter words: " 
Enter words: v1 v2 v3 v4 v5 
$ echo "${arr[@]}" 
v1 v2 v3 v4 v5 
$ read -a arr -p "Enter words: " 
Enter words: v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 
$ echo "${arr[@]}" 
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 

此使用shell分詞和輸入分配給陣列arr,其中的元素然後可以使用訪問${arr[0]},${arr[1]}

主要優點是數組中包含的元素與您輸入的元素完全相同,您不必事先知道會有多少元素。

+0

你可以擴展一下嗎?我無法理解。例如,假設我想使用'grep'來搜索輸入的多個字符串,而沒有任何關於這些字符串將會是什麼的預定概念或者將要輸入的字符串的數量。如果需要,我可以更新原始問題。 –

+0

@ user556068這取決於你想要grep的內容:所有術語或其中的任何一個。 [這個問題](http://stackoverflow.com/questions/36275421/how-to-make-a-script-to-make-multiple-greps-over-a-file)詢問有關從多個搜索創建grep命令的問題條款。或者你不明白的究竟是什麼? –

+0

「主要優點是數組與您輸入的元素完全相同,您不必事先知道會有多少元素。」所以如果我想使用數組變量來對任何和/或所有未定數目的用戶定義的術語進行grep,那麼我該怎麼做呢?例如,在運行1:我想grep 3隨機條款。在運行2:我想grep一個不同的7個隨機項的集合。在運行3:我想grep 4隨機條款。 –

相關問題