さて、最も単純で最も効率的なメカニズムはオプション0です:
v="abc"
最初のメカニズムには、4つの割り当てが含まれます。
2番目のメカニズムは奇妙です(そして間違いなく読めません)。これは(名目上)2つのサブシェル(2つの` `
部分)で空のコマンドを実行し、出力(空の文字列)を3つの定数と連結します。シェルが空であることに気付かずに単にバックティックコマンドを実行する場合(そして、気付かないのは不合理ではありません。試してみるのは奇妙なことです。過去30年間に実行されたのを覚えていません。シェルスクリプトの)、これは間違いなく非常に遅いです。
したがって、オプション(1)と(2)のみが与えられた場合は、オプション(1)を使用しますが、通常は、上記のオプション(0)を使用します。
なぜあなたはそのように少しずつ弦を作り上げるのですか?元のコードを適切なものにするが、縮小されたコードはあまり適切ではないことを示す例に欠けているもの。
v=""
x=$(...)
v="$v$x"
y=$(...)
v="$v$y"
z=$(...)
v="$v$z"
これは、特に、以降のそれぞれを使用する場合、および/またはの中間値を使用する場合(おそらくトリプルドットで表されるコマンドで)、より理にかなっ$x
て$y
い$z
ます$v
。使用される連結表記は、Bourneシェルの導関数で機能します。代替+=
シェルはより少ないシェルで動作しますが、おそらくわずかに効率的です(「わずかに」に重点を置いています)。