매개변수를 쉘에 전달하고 매개변수가 비어 있지 않은지 확인하는 방법

매개변수를 쉘에 전달하고 매개변수가 비어 있지 않은지 확인하는 방법

get.sh날짜를 다음과 같은 변수로 설정하는 작은 코드가 있습니다 .

date=$(date +%b%d%y)

get.sh이제 사용자 정의 날짜 매개변수를 좋아요 에 전달할 수 있기를 원합니다.

./get.sh --date=2019-01-01

그리고 get.sh에서는 매개변수가 전송되었는지 확인하고 매개변수를 그대로 두는 대신 전송되지 않은 경우 매개변수를 가져올 수 있습니다.

if ( isset( dateFromCli ) )
date = datefromCLi
else
date=$(date +%b%d%y

답변1

Bash 매뉴얼 페이지의 "특수 매개변수"를 참조하십시오. 간단히 말해서, 테스트할 수 있어야 합니다.${#}제공된 명령줄 인수 수를 확인하고${1},${2},${3}, ... 개별 매개변수 값을 사용합니다.

답변2

특정 문제의 경우 Bash를 사용하는 경우에도 작동하며 구성을 생략하여 코드를 약간 단축할 수 있습니다 if.

currentDate=${dateFromCLI-+%b%d%y}

등호 오른쪽의 표현식은 매개변수 확장의 특수한 형태입니다. 일반적인 형태는 다음과 같습니다.

${variableName-"default value"}

해당 이름의 변수가 정의되면 variableName전체 ${}구성이 해당 변수의 값으로 확장됩니다.

-그러나 정의되지 않은 경우 구문은 리터럴 하이픈( ) 오른쪽의 기본값으로 확장됩니다 . 변수는 이전에 할당되었고 이후에 설정 해제되지 않은 경우 정의된 것으로 간주됩니다. null이 할당된 경우에도 정의됩니다.

이전에 null 값을 설정한 경우 dateFromCLI동일한 확장 스타일을 사용할 수 있지만 -이를 :-. 이 경우 명명된 변수가 정의되었지만 null 값(빈 문자열)이 있는 경우 기본값도 선택됩니다.

${variableName:-"default value"}

인용하다:GNU Bash 참조 매뉴얼: 쉘 매개변수 확장

관련 정보