BASH 스크립트의 표현을 설명해 주시겠습니까?
${1:-}
전에는 본 적이 없으므로 그 중 일부를 시도합니다.
echo ${1:-}
echo ${1}
나는 어떤 차이점을 볼 수 없습니다.
대단히 감사합니다!
BASH 스크립트의 표현을 설명해 주시겠습니까?
${1:-}
전에는 본 적이 없으므로 그 중 일부를 시도합니다.
echo ${1:-}
echo ${1}
나는 어떤 차이점을 볼 수 없습니다.
대단히 감사합니다!
단지 작은 예는 비어 또는 설정하지 않으며이 :
변화로 설정되어 있지 않은 경우 경우 :-
변수의 값을 변경 here
varName="Aloha"
echo "varName is not empty: the two constructs behave the same"
echo ${varName-Hello World}
echo ${varName:-Hello World}
echo ""
unset varName
echo "varName is unset: they still behave the same way"
echo ${varName-Hello World}
echo ${varName:-Hello World}
echo ""
varName=""
echo "varName is empty: this is where the two differs"
echo ${varName-Hello World}
echo ${varName:-Hello World}
echo ""
basicalli 각색.
예를 들어 주셔서 감사합니다. 명확하게 설명하십시오. – Jinnan
:
$ {매개 변수 : -Word}
사용시 기본 설정 값. 매개 변수가 설정되지 않았거나 null 인 경우 단어 확장은 으로 대체됩니다. 그렇지 않으면 매개 변수의 값이 대체됩니다.
많은 용도가 없습니다. ${1-}
은 set -u
이 활성화되었을 때 관련이 있습니다.이 경우 재설정되지 않을 것으로 예상되는 값을 가진 매개 변수가 참조 해제되는 경우 오류가 발생하지 않도록 ${1+"$1"}
과 유사한 또 다른 해킹입니다.
$ (f() { printf '<%s> <%s>\n' $# ${1-}; }; set -u; f)
<0> <>
$ (f() { printf '<%s> <%s>\n' $# $1; }; set -u; f)
-bash: $1: unbound variable
콜론을 추가하면 매개 변수가 설정되지 않았거나 null 인 경우 대체 문자가 확장됩니다. 두 경우 모두 확장이 인용되지 않으면 결과는 항상 IFS 값과 관계없이 args가되지 않습니다. 사람들이 Bash의 맨 페이지에 불행한 불운 한 방식으로 인해 -
과 :-
PE 연산자의 차이를 알지 못하는 것은 흔한 일입니다.
늘 그렇듯이 스크립트에서 set -u
을 절대 사용하지 않는 것이 좋습니다. 디버깅에 유용하다고 생각되는 사용자는 임시로만 사용하십시오.
고맙습니다. 그러나 그것은 나를 위해 조금 difficut. – Jinnan
설명서를 읽으셨습니까? –
영어 실력이 떨어지고 배쉬 매뉴얼에서 키워드를 찾을 수 없습니다. – Jinnan