1. ホーム
  2. linux

[解決済み] Linuxのbashです。変数の多重代入

2022-05-09 13:31:09

質問

linux bashでPHPの以下のコードに似たようなものは存在しますか?

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

つまり、1つの文で3つの異なる変数に対応する値を代入しているのです。

例えば、bashの関数である myBashFuntion という文字列を標準出力に書き出します。 のようなことは可能でしょうか?

(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つ、避けたい文がありますね。

ショートカットの構文を探しているんだ。可能でしょうか?

どのように解決するのですか?

最初に頭に浮かぶこと

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

の出力は、当然のことながら

1|2|3