이 BASH 코드를 설명해주세요(한 줄)

이 BASH 코드를 설명해주세요(한 줄)

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}당신이 설명하는 방식 이 아닌가요 ?

관련 정보