bash 함수의 선택적 매개 변수


12

새로운 SVN 분기를 신속하게 만드는 기능이 있습니다.

function svcp() { svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "dev branch for $2"; }

주소와 다른 것들을 찾아서 붙여 넣지 않고도 신속하게 새로운 지점을 만드는 데 사용합니다. 그러나 메시지 (-m 옵션)의 경우 세 번째 매개 변수를 제공하면 메시지로 사용되는 매개 변수를 사용하고 싶습니다. 그렇지 않으면 "dev branch for $ 2"의 'default'메시지가 사용됩니다. 누군가 이것이 어떻게 수행되는지 설명 할 수 있습니까?

답변:


20
function svcp() { 
    msg=${3:-dev branch for $2}
    svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "$msg";
}

비어 있지 않은 경우 변수 msg가 설정되고 , 그렇지 않으면 기본값이로 설정됩니다 . 그런 다음의 인수로 사용됩니다 .$3$3dev branch for $2$msg-m


3

bash 맨 페이지에서 :

 ${parameter:-word}
          Use Default Values.  If parameter is unset or null, the expansion of word is substituted.  Otherwise, the value of parameter is substituted.

귀하의 경우에는

$ 함수 svcp () {
  def_msg = "$ 2의 dev 지점"
  echo svn copy "repoaddress / branch / $ 1.0.x" "repoaddress / branch / dev / $ 2"-m \ "$ {3 :-$ def_msg} \";
}

$ svcp 2 흥분 _new_stuff
svn 사본 repoaddress / branch / 2.0.x repoaddress / branch / dev / exciting_new_stuff -m "흥미로운 _ 새로운 _ 상품을위한 dev 분기"

$ svcp 2 exotic_new_stuff "세계 지배를위한 비밀 레시피"
svn copy repoaddress / branch / 2.0.x repoaddress / branch / dev / exciting_new_stuff -m "세계 지배를위한 비밀 레시피"
$

생성 된 svn 명령에 만족하면 echo 명령을 제거 할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.