我正在尝试使用多个变量初始化一个数组,如下所示。
StringOne="This is a Test String"
StringTwo="This is a New String"
read -r -a Values <<< "$StringOne" "$StringTwo"
但似乎数组只从第一个变量.ie StringOne
获取值 $ echo ${Values[0]}
This
$ echo ${Values[1]}
is
$ echo ${Values[2]}
a
$ echo ${Values[3]}
Test
${Values[4]}
String
$ echo ${Values[5]}
$ echo ${Values[6]}
$
这种为数组初始化传递变量值的方法有什么问题?我们不能用&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;运营商?
答案 0 :(得分:2)
这种为数组初始化传递变量值的方法有什么问题?我们不能用&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;运营商?
是和否。 <<<
运算符将一个shell单词作为其操作数,正如其文档中非常清楚地呈现的那样。但是,您可以通过适当使用引号将多个变量的值组合在一个shell单词中:
StringOne="This is a Test String"
StringTwo="This is a New String"
read -r -a Values <<< "$StringOne $StringTwo"
echo "${Values[@]}"
输出:
这是一个测试字符串这是一个新字符串
答案 1 :(得分:0)
使用:
read -r -a Values <<< "$StringOne"" ""$StringTwo"
或者:
read -r -a Values <<< "$StringOne"' '"$StringTwo"
或者:
out="$StringOne $StringTwo"
read -r -a Values <<< "$out"
或者关于这个主题的其他变体。
这是有效的,因为通过<<<
发送的字符串是扩展右侧内容的结果。我们可以通过连接它们使两个变量充当一个长字符串。