使用读取命令拆分用户输入

使用读取命令拆分用户输入
echo -n "# WHICH DAYS? #"
read day

假设用户输入的是:100 101数字之间有一个空格。例如,我需要分别提取当天的第一列和第二列的值,哪个命令可以给出这个值?我尝试了下面的命令,但它们给出了整个数组;

first_column_of_day=${day[${1}]}
echo "$first_column_of_day"

second_column_of_day=${day[${2}]}
echo "$second_column_of_day"

答案1

首先,你应该告诉read使用数组。来自help read

-a array    assign the words read to sequential indices of the array
            variable ARRAY, starting at zero

因此,请这样做:

read -a day

然后,只使用12,不用${...}。在这种情况下,正如帮助文本所述,从 开始0

first_column_of_day="${day[0]}"
second_column_of_day="${day[1]}"

${1}是脚本的第一个参数,可能是也可能不是1

还要注意,bash可以read打印提示:

-p prompt   output the string PROMPT without a trailing newline before
            attempting to read

所以:

read -p "# WHICH DAYS? #" -a day

相关内容