.png)
BASH에서 이전에 사용된 것을 본 적이 없습니다.
pidfile=${PIDFILE-/var/run/service.pid}
지금까지 본 적/사용해본 적 없는 부분이 바로 그 ${PIDFILE-
부분입니다.
답변1
이는 정의된 $PIDFILE
경우 사용하거나 정의되지 않은 경우 사용을 의미합니다.$PIDFILE
/var/run/service.pid
$PIDFILE
새 셸로 시작하기:
$ echo ${PIDFILE-/var/run/service.pid}
/var/run/service.pid
이제 PIDFILE을 정의하십시오.
$ PIDFILE=/var/run/myprogram.pid
$ echo ${PIDFILE-/var/run/service.pid}
/var/run/myprogram.pid
Bourne Shell의 옛날부터입니다.sh 맨페이지.
${parameter-word}
If parameter is set then substitute its value;
otherwise substitute word.
이미 본 다른 형식은 입니다 ${parameter:-word}
. 유사하지만 parameter
빈 문자열로 설정된 경우 다르게 동작합니다.
${parameter:-word}
Use Default Values. If parameter is unset or null,
the expansion of word is substituted. Otherwise,
the value of parameter is substituted.
시연하려면:
$ set | grep NOSUCHVAR # produces no output because NOSUCHVAR is not defined
$ echo ${NOSUCHVAR-default}
default
$ echo ${NOSUCHVAR:-default}
default
$ NULLVAR=
$ set | grep NULLVAR # produces output because NULLVAR is defined
NULLVAR=
$ echo ${NULLVAR-default}
$ echo ${NULLVAR:-default}
default
${NULLVAR-default}
빈 문자열로 어떻게 확장되는지 참고하세요 .NULLVAR
~이다한정된.
전체 설명을 보려면 "man bash"를 실행하고 다음을 검색하세요.매개변수 확장"/매개변수 확장"을 입력하세요.
${parameter-word} 비트는 이 설명에서 숨겨져 있습니다.
When not performing substring expansion, using the forms documented below,
bash tests for a parameter that is unset or null. Omitting the colon results
in a test only for a parameter that is unset.
set 대 null에 대한 수정에 대해 Dennis에게 감사드립니다.
답변2
미켈:
pidfile=${PIDFILE:-/var/run/service.pid}
당신이 설명하는 방식 이 아닌가요 ?