bash가 변수를 한 줄에 에코하기 위해 &&가 필요한 이유는 무엇입니까?


12

이유는 무엇입니까 SOMETHING=1 && echo $SOMETHING필요는 &&반환 1
하지 않습니다 왜 SOMETHING=1 echo $SOMETHING수익을1


7
특히 건설적인 피드백을 남기지 않고 귀하의 질문을 줄인 사람은 부끄러운 일입니다. 유효한 질문이며 bash가 단어 / 매개 변수 / 변수 / 물결 확장 및 명령 실행 순서는 까다 롭습니다. 나는 당신에게 +1을주고 있습니다.
Spiff


기술적으로 "echo 1"은 0을 리턴하고 출력은 1입니다. 즉, "echo"는 상태가 "0"으로 종료되고 인수를 stdout하기 위해 표시됩니다. 문구 "나에게 1을 돌려 준다"는 "출력"이 아니라 "종료 상태"를 암시하고 있었고 언뜻보기에는 약간 혼란 스러웠다.
마이클

답변:


8

bash는 변수 할당 문을 해석하기 전에 변수 확장을 수행하기 때문입니다. 따라서 SOMETHING이 이전에 정의되지 않았으므로 명령은 다음과 같습니다.

SOMETHING=1 echo ''

… 그러면 처형됩니다.


변수 확장은 변수 대체와 동일합니까?
Joel

1
@JoelL : 맞다
Gordon Davisson

0

동시에 내보내고 에코

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:~# 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.