為什麼 bash 需要 && 在一行上回顯變數?

為什麼 bash 需要 && 在一行上回顯變數?

為什麼 SOMETHING=1 && echo $SOMETHING需要&&退貨1
為什麼不SOMETHING=1 echo $SOMETHING退貨1

答案1

因為 bash 在解釋變數賦值語句之前進行變數擴展。因此,由於之前未定義某些內容,因此您的命令將變為...

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

相關內容