一尘不染

Linux bash:多变量分配

linux

Linux bash中确实存在类似于PHP中以下代码的内容:

list($var1, $var2, $var3) = function_that_returns_a_three_element_array() ;

也就是说,您在一个句子中为3个不同的变量分配了一个对应的值。

假设我有bash函数myBashFuntion,该函数将stdout字符串“ 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]}

但是,我还是希望避免另外3条语句。

我只是在寻找一种快捷方式语法。可能吗?


阅读 250

收藏
2020-06-02

共1个答案

一尘不染

我想到的第一件事:

read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"

毫不奇怪,输出是

1|2|3
2020-06-02