bash에서 한 줄에 변수를 에코하려면 &&가 필요한 이유는 무엇입니까?

bash에서 한 줄에 변수를 에코하려면 &&가 필요한 이유는 무엇입니까?

반환 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.

관련 정보