
なぜ返却するSOMETHING=1 && echo $SOMETHING
必要があるのか なぜ返却 しないのか&&
1
SOMETHING=1 echo $SOMETHING
1
答え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
。