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실제로 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 ];

그것은 유효합니다.

관련 정보