변수를 올바르게 내보내고 싶습니다. 이를 위해서는 다양한 구문 변형을 이해해야 했습니다. 변수를 내보내는 다음 메커니즘을 보았습니다. 이 경우에는 다음을 사용합니다 .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
이 있으므로 실제 실행되는 명령은 이기 때문 입니다 . 내보내지지 않으므로 기본값은 null입니다. 그러나 마지막 줄이 다음과 같은 경우:bar
foo
export bar
foo
( echo "$bar" )
다가오는 서브셸에 편집된 baz
값이 포함된 출력을 얻게 됩니다 .bar
export
"
일반적으로 약한 따옴표(" ") 를 사용하는 것이 좋습니다.모두변수 참조 이유에는 언급한 이유(예: 파일 이름 및 경로의 공백)가 포함되지만 이에 국한되지는 않습니다. 예를 들어 다음과 같은 경우가 있습니다.
if [ $letter == a ]; then echo "ayyyy"; fi
그러나 letter
그것들은 모두 비어 있으며 쉘은 실행을 시도할 것입니다.
if [ == a ]
이는 구문 오류이지만 따옴표가 있습니다.
if [ "$letter" == a ];
~이 되다
if [ "" == a ];
이것은 작동합니다.