일부 프로세스에 진행률 표시줄을 추가하기 위한 쉘 스크립트를 읽고 있습니다.여기). 이 줄을 이해할 수 없습니다(선택 사항).
#BAR_EXT=${BAR_EXT-}
주석에는 이것이 각 파일에 확장명을 추가할 것이라고 나와 있습니다. 어쩌면 더 읽어야 할 수도 있지만 - 연산자의 사용법에 익숙하지 않습니다.
나는 다음과 같은 대안을 알고 있습니다.배쉬 참조 매뉴얼:
${parameter:-word}
위의 내용은 null 값 을 parameter
. (적어도 나는 그것을 알고 있다고 생각합니다.)word
${parameter-word}
하지만 이 이후에는 아무것도 지정되지 않았 -
으며 무슨 일이 일어나고 있는지 잘 모르겠습니다. 이것이 단순히 parameter
null 값을 대체합니까 ? 일반적으로 나는 이것을 실제적인 추측으로 받아들이고 계속 읽으려고 합니다. 그러나 언급된 의견은 다음과 같습니다.다음에 추가파일 확장자.
답변1
스크립트에 명령이 포함되어 있습니까 set -u
? 이것은 의미한다
매개변수 확장 시 설정되지 않은 변수와 특수 매개변수 "@", "*" 이외의 매개변수는 오류로 처리됩니다. 설정되지 않은 변수나 매개변수에 대해 확장을 시도하면 쉘은 오류 메시지를 인쇄하고 대화형이 아닌 경우 0이 아닌 상태로 종료됩니다.
즉, $BAR_EXT
설정되지 않은 경우 다음과 같습니다.
BAR_FILE="$BAR_FILE$BAR_EXT"
실패할 것이다. 주문하다
BAR_EXT=${BAR_EXT-}
$BAR_EXT
전혀 정의되지 않은 경우 명시적으로 빈 문자열로 설정되어 이러한 오류를 방지합니다.
답변2
${VARIABLE-}
VARIABLE
설정된 경우 값으로 확장되고, 그렇지 않으면 빈 문자열로 확장됩니다. 이것은 보통 이성애자들이 $VARIABLE
하는 일이다. 그러나 옵션을 선택하면set -u
( set -o nounset
) on, $VARIABLE
변수가 설정되지 않은 경우 오류를 유발하지만 ${VARIABLE-}
여전히 빈 문자열을 생성합니다. 따라서 ${VARIABLE-}
"변수가 설정되지 않은 경우에도 빈 문자열이 생성되기를 원합니다"를 의미하고, $VARIABLE
"변수를 설정하려고 합니다"를 의미하거나 의미할 수 있습니다.
답변3
최신 Bourne Shell 매뉴얼 페이지를 확인하세요.
http://schillix.sourceforge.net/man/man1/bosh.1.html
현재 8페이지에 있는 "매개변수 대체" 섹션을 찾아보세요. 두 페이지 아래에는 가능한 모든 확장을 설명하는 표가 있습니다.
Bourne Shell은 매개변수 대체에서 "-" 이상의 기능을 지원합니다.