如何从用户输入

时间:2016-04-03 07:05:53

标签: bash

使用read -p "ENTER 1 - 5 WORDS" v1 v2 v3 v4 v5允许我通过在命令行上键入每个变量v来赋值。这是最实用的方法吗?假设我想分配更多的变量。我会以同样的方式列出每一个吗?我尝试了read -p "ENTER 1-20 WORDS" {v1..v20}但没有效果。

2 个答案:

答案 0 :(得分:2)

v不是序列的一部分。试试这个:

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

答案 1 :(得分: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]}等访问其元素。

主要优点是阵列保存的元素与您输入的元素完全相同,并且您不必事先知道将有多少元素。