web-dev-qa-db-ja.com

変数を1行にエコーするためにbashが&&を必要とするのはなぜですか?

なぜ SOMETHING=1 && echo $SOMETHING必要&&を返す1
なぜSOMETHING=1 echo $SOMETHING return 1

12
Joel

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

SOMETHING=1 echo ''

…その後、実行されます。

8
Spiff

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

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:~# 
0
moonbutt74