Bash 매개변수 확장 "대체" 및 "할당"

Bash 매개변수 확장 "대체" 및 "할당"

vs. ${parameter:-word}매개변수 확장을 사용하는 방법을 알아보고 있습니다 .${parameter:=word}

다음은 관련 문서입니다.:

${parameter:-word}인수가 설정되지 않거나 비어 있으면 단어의 확장이 대체됩니다.

${parameter:=word}인수가 설정되지 않거나 비어 있으면 단어의 확장이 인수에 할당됩니다. 그런 다음 매개변수의 값을 바꿉니다.

물론 주요 차이점은 각 설명의 첫 번째 문장, 즉 대체 대 할당입니다.

substituted하지만 실제로는 무엇인가가 일 때 와 일 때 무슨 일이 일어나는지 모릅니다 assigned.

마지막으로, 언제 다른 것을 사용하는 것이 적절한가요?

답변1

다음 예를 고려하십시오.

#!/bin/bash

echo "${parameter:-a}"
echo "${parameter:-b}"
echo "${parameter:=c}"
echo "${parameter:=d}"

그리고 스크립트 실행의 예:

$ bash ex.sh
a
b
c
c

첫 번째 항목 echoparameter설정되지 않았 a으므로교체됨. 이 인쇄됩니다 a.

두 번째 항목에서는 echo아직 parameter설정되지 않았 b으므로교체됨. 이 인쇄됩니다 b.

세 번째 항목에서는 echo아직 parameter설정되지 않았 parameter으므로분산가치를 부여한 cparameter평가하세요. 이 인쇄됩니다 c.

네 번째 에코에서는parameter 놓다c(이전 명령문에서는 )로 설정되었으므로 해당 값이 인쇄됩니다. 다시 인쇄 c됩니다.

설정되지 않거나 비어 있으면 ${parameter:-word}계산 결과가 null이 되지만 영향을 미치지 않는 것을 알 수 있습니다.wordparameterparameter, 동안 ${parameter:=word}설정 됩니다설정되지 않은 경우 parameter비어 있습니다.

관련 정보