변수를 올바르게 내보내고 싶습니다. 그러기 위해서는 구문의 여러 변형을 이해해야 합니다. 변수를 내보내는 다음 메커니즘을 보았습니다. 이 경우 다음을 사용하고 있습니다 .bashrc
.
export MY_VARIABLE=$USER/.gradle
--$export MY_VARIABLE="$USER/.gradle"
--인용 부호export MY_VARIABLE=USER/.gradle
--아니요 $export $MY_VARIABLE=$USER/.gradle
--모든 $
이 경우 $ 기호의 의미는 무엇입니까? 왜 때로는 사용되고 다른 경우에는 사용되지 않습니까?
경로에 공백이 없는 경우 따옴표가 필요합니까? $USER에 포함된 경로에 공백이 있으면 어떻게 되나요?
수출 왼쪽에 왜 $가 없나요?
답변1
export
, declare
등 의 토큰은 변수 이름을 매개변수로 명시적으로 사용합니다. $
일반적으로 "~의 가치"를 의미하는 것으로 이해될 수 있으므로 $variable
"~의 가치 variable
"를 의미합니다. 다음 명령 세트를 사용하십시오.
foo=bar
bar=baz
export $foo
( echo "$foo" )
여기서 일어나는 일은 빈 줄 하나가 출력된다는 것입니다. 이는 export
명령 에서 가 $foo
실제로 bar
(의 값 foo
)이므로 실행되는 실제 명령은 이기 때문입니다 export bar
. 내보내지지 않으므로 foo
기본값은 null입니다. 그러나 마지막 줄이 다음과 같은 경우:
( echo "$bar" )
의 출력을 얻게 되며 그 baz
값은 향후 하위 쉘에 추가 bar
됩니다 .export
"
일반적 으로 약한 따옴표(" ") 를 사용하는 것이 좋습니다.모두언급한 이유(예: 파일 이름 및 경로의 공백)를 포함하되 이에 국한되지 않는 이유로 인해 변수 참조가 발생합니다. 예를 들어 다음과 같은 경우가 있습니다.
if [ $letter == a ]; then echo "ayyyy"; fi
하지만 letter
비어 있으면 쉘이 실행을 시도합니다.
if [ == a ]
이는 구문 오류이지만 따옴표가 있습니다.
if [ "$letter" == a ];
된다
if [ "" == a ];
그것은 유효합니다.