변수의 배쉬 변수 대체와 밑줄


12

변수 BUILDNUMBER는 값 230으로 설정됩니다 230_. 명령에 대해 인쇄 될 것으로 예상 echo $BUILDNUMBER_되지만 출력은 아래와 같이 비어 있습니다.

# echo $BUILDNUMBER_

# echo $BUILDNUMBER
230

답변:


27

이 명령 echo $BUILDNUMBER_$BUILDNUMBER_설정되지 않은 변수의 값을 인쇄합니다 (밑줄은 Jeff Schaller가 명시 적으로 언급 한대로 변수 이름에 유효한 문자 임)

변수 이름 주위에 중괄호 (중괄호)를 적용하거나 가장 엄격한 printf도구를 사용해야합니다 .

echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"

추신 : 항상 변수를 인용하십시오.


1
문서와 표준은 변수가 빈 문자열로 설정되어있는 경우 (설정되지 않은 변수가 아닌) "널"이라는 용어를 사용합니다. 나는 편집의 자유를 가져 갔다.
ilkkachu

8

George Vassiliou가 이미 설명했듯이 , $BUILDNUMBER_대신 변수 를 인쇄하기 때문 입니다 $BUILDNUMBER. 원하는 것을 얻는 가장 좋은 방법 ${BUILDNUMBER}_은 George가 설명한대로 사용 하는 것입니다. 몇 가지 옵션이 더 있습니다 :

$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_

우리는 변수가 무엇을 $IFS가지고 있는지 알고 있지만 , 무엇을 가지고 있는지 모릅니다 echo $BUILDNUMBER"_". 그래서 여전히 잘못되었습니다. 세 가지 중에서 printf '%s_\n' "$BUILDNUMBER"우리가 무엇을 알지 못 $BUILDNUMBER하거나 알지 못하는 경우 에만 정확합니다 $IFS.
Stéphane Chazelas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.