Bash如何使用read命令将多个单词分配给1个变量

时间:2014-10-08 20:38:20

标签: arrays string bash

我试图通过read将多个单词/参数放入一个变量中。我尝试将它分配到一个数组中并使用while循环将数组中的所有元素放入1个字符串中。

    read -a info
    i=0
    datastring=""
    while [ $i -lt ${info[@]} ] 
    do
        datastring=$datastring${info[i]}
    done
    echo "$dataString"

当我运行该程序时,它只是没有做任何事情并且坐在那里并且不会打印出数据串,而且我在其他任何方式上都会丢失。

1 个答案:

答案 0 :(得分:1)

read datastring <<<"this sentence contains multiple words"
echo "$datastring"

如果您已有阵列

datastring=${info[*]}

将数组连接成一个单词,使用$ IFS的第一个字符作为分隔符。如果你想要所有的单词都没有分隔符,你可以这样做:

datastring=""
for word in "${info[@]}"; do datastring+=$word; done

或者这个:

datastring=$(IFS=""; echo "${info[*]}")

或者这个:

datastring=${info[*]}
datastring=${datastring// /}

注意,所有引号和数组索引(* vs @)都经过精心挑选:参见
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
http://www.gnu.org/software/bash/manual/bashref.html#Arrays