我试图通过read将多个单词/参数放入一个变量中。我尝试将它分配到一个数组中并使用while循环将数组中的所有元素放入1个字符串中。
read -a info
i=0
datastring=""
while [ $i -lt ${info[@]} ]
do
datastring=$datastring${info[i]}
done
echo "$dataString"
当我运行该程序时,它只是没有做任何事情并且坐在那里并且不会打印出数据串,而且我在其他任何方式上都会丢失。
答案 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