bashrc의 변수에 대한 기본 구문 설명

bashrc의 변수에 대한 기본 구문 설명

변수를 올바르게 내보내고 싶습니다. 이를 위해서는 다양한 구문 변형을 이해해야 했습니다. 변수를 내보내는 다음 메커니즘을 보았습니다. 이 경우에는 다음을 사용합니다 .bashrc.

  1. export MY_VARIABLE=$USER/.gradle--$

  2. export MY_VARIABLE="$USER/.gradle"- 인용 부호

  3. export MY_VARIABLE=USER/.gradle--아니요 $

  4. export $MY_VARIABLE=$USER/.gradle--모두 $

이 경우 $ 기호는 무엇을 의미합니까? 왜 때로는 사용되고 때로는 사용되지 않습니까?

경로에 공백이 없으면 따옴표가 필요합니까? $USER에 포함된 경로에 공백이 포함되어 있으면 어떻게 되나요?

내보내기 왼쪽에 $가 없는 이유는 무엇입니까?

답변1

export, 기타 태그는 declare명시적으로 변수 이름을 매개변수로 사용합니다. $일반적으로 '~의 가치'라는 뜻으로 이해하면 $variable'~의 가치 variable'라는 뜻이 됩니다. 다음 명령 세트를 실행하십시오.

foo=bar
bar=baz
export $foo
( echo "$foo" )

여기서 일어나는 일은 빈 줄의 출력을 얻게 된다는 것입니다. 이는 export명령 에 실제로 (의 값 ) $foo이 있으므로 실제 실행되는 명령은 이기 때문 입니다 . 내보내지지 않으므로 기본값은 null입니다. 그러나 마지막 줄이 다음과 같은 경우:barfooexport barfoo

( echo "$bar" )

다가오는 서브셸에 편집된 baz값이 포함된 출력을 얻게 됩니다 .barexport

"일반적으로 약한 따옴표(" ") 를 사용하는 것이 좋습니다.모두변수 참조 이유에는 언급한 이유(예: 파일 이름 및 경로의 공백)가 포함되지만 이에 국한되지는 않습니다. 예를 들어 다음과 같은 경우가 있습니다.

if [ $letter == a ]; then echo "ayyyy"; fi

그러나 letter그것들은 모두 비어 있으며 쉘은 실행을 시도할 것입니다.

if [  == a ]

이는 구문 오류이지만 따옴표가 있습니다.

if [ "$letter" == a ];

~이 되다

if [ "" == a ];

이것은 작동합니다.

관련 정보