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"}