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
첫 번째 항목 echo
은 parameter
설정되지 않았 a
으므로교체됨. 이 인쇄됩니다 a
.
두 번째 항목에서는 echo
아직 parameter
설정되지 않았 b
으므로교체됨. 이 인쇄됩니다 b
.
세 번째 항목에서는 echo
아직 parameter
설정되지 않았 parameter
으므로분산가치를 부여한 c
후 parameter
평가하세요. 이 인쇄됩니다 c
.
네 번째 에코에서는parameter
예 놓다c
(이전 명령문에서는 )로 설정되었으므로 해당 값이 인쇄됩니다. 다시 인쇄 c
됩니다.
설정되지 않거나 비어 있으면 ${parameter:-word}
계산 결과가 null이 되지만 영향을 미치지 않는 것을 알 수 있습니다.word
parameter
값parameter
, 동안 ${parameter:=word}
설정 됩니다값설정되지 않은 경우 parameter
비어 있습니다.