Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Bash如何使用read命令将多个字分配给一个变量_Arrays_String_Bash - Fatal编程技术网

Arrays Bash如何使用read命令将多个字分配给一个变量

Arrays Bash如何使用read命令将多个字分配给一个变量,arrays,string,bash,Arrays,String,Bash,我试图用read将多个单词/参数放入一个变量中。我尝试将其分配到一个数组中,并使用while循环将数组中的所有元素放入一个字符串中 read -a info i=0 datastring="" while [ $i -lt ${info[@]} ] do datastring=$datastring${info[i]} done echo "$dataString" 当我运行程序时,它什么都不做,坐在那里,不会打印数据字

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

    read -a info
    i=0
    datastring=""
    while [ $i -lt ${info[@]} ] 
    do
        datastring=$datastring${info[i]}
    done
    echo "$dataString"
当我运行程序时,它什么都不做,坐在那里,不会打印数据字符串,我有点迷失在任何其他方式上

read datastring <<<"this sentence contains multiple words"
echo "$datastring"
将使用$IFS的第一个字符作为分隔符,将数组连接成单个字。如果您想将单词全部涂抹在一起而不使用分隔符,可以执行以下操作:

datastring=""
for word in "${info[@]}"; do datastring+=$word; done
或者这个:

datastring=$(IFS=""; echo "${info[*]}")
datastring=${info[*]}
datastring=${datastring// /}
或者这个:

datastring=$(IFS=""; echo "${info[*]}")
datastring=${info[*]}
datastring=${datastring// /}
注意,所有引号和数组索引(
*
vs
@
)都经过仔细选择:请参见


你想做什么?假设
info
是5,然后
0<5
,出于某种原因,您不断将5连接到一个变量上无数次?您从不更新循环中的
i
,而是希望将其与
${info[@]}
进行比较。但是,如果你只是想把它压缩成一个字符串,那么为什么首先要把它读入数组呢?好吧,这应该是一段脚本,用来创建一个文件,排序应该是一行,里面有很多字段。命令行给出了文件名和类型。这是测试代码,看看这是否有效,但显然没有。我也不知道如何在每个论点之间留出一个空格。这就是重点。至于为什么我做得这么好,这对bash来说是一种新的体验,所以我正在努力学习如何做不同的事情。谢谢你,这帮了我很大的忙。