bash では、変数を 1 行にエコーするのになぜ && が必要なのでしょうか?

bash では、変数を 1 行にエコーするのになぜ && が必要なのでしょうか?

なぜ返却するSOMETHING=1 && echo $SOMETHING必要があるのか ​​ なぜ返却 しないのか&&1
SOMETHING=1 echo $SOMETHING1

答え1

bash は変数割り当てステートメントを解釈する前に変数展開を行うためです。したがって、SOMETHING が以前に定義されていなかったため、コマンドは次のようになります...

SOMETHING=1 echo ''

…そして処刑される。

答え2

エクスポートとエコーを同時に行う

root@kali:~# echo ${SOMETHING=1}
1
root@kali:~# echo $SOMETHING
1
root@kali:~# unset SOMETHING
root@kali:~# echo $SOMETHING

root@kali:~# echo ${SOMETHING=1}
1
root@kali:~# 

もう一つのもっと間抜けな例 xD

root@kali:~# echo ${SOMETHING=1} ${PLUS=+} ${SUMTHIN=2} ${EQUALS==} && expr $SOMETHING $PLUS $SUMTHIN
1 + 2 =
3
root@kali:~# 

答え3

変数は後で(代入後に)評価する必要があります。例えば、

SOMETHING=1 eval 'echo $SOMETHING'

の伝播を防ぐためSOMETHING

関連情報