在linux bash中是否存在类似于PHP中以下代码的东西:
list($var1, $var2, $var3) = function_that_returns_a_three_element_array() ;
也就是说,你可以在一句话中给3个不同的变量分别赋值。
假设我有一个bash函数myBashFuntion
,它将字符串"qwert asdfg zxcvb"写入标准输出。是否可以像下面这样做:
(var1 var2 var3) = ( `myBashFuntion param1 param2` )
左侧等于号的部分显然不是有效的语法。我只是试图解释我的问题所在。但以下内容是有效的:
array = ( `myBashFuntion param1 param2` )
echo ${array[0]} ${array[1]} ${array[2]}
但是,一个索引数组并不像普通变量名那样具有描述性。
然而,我可以这么做:
var1 = ${array[0]} ; var2 = ${array[1]} ; var3 = ${array[2]}
但这些语句我希望能够避免。
我只是在寻找一种简便的语法。这可行吗?
read -d "\n" v1 v2 <<<$(cmd)
非常完美。谢谢! - Rucent88echo
命令的返回状态是无意义的,但我使用这种技巧来从一个我关心其返回状态的脚本中返回多个值。我想分享我的发现。 - Lee Nethertonread -r
:不允许反斜杠转义任何字符
。 - Tom Hale