พารามิเตอร์ทางเลือกในฟังก์ชั่นทุบตี


12

ฉันมีฟังก์ชั่นสำหรับการสร้างสาขา SVN ใหม่ที่รวดเร็ว

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

ซึ่งฉันใช้เพื่อสร้างสาขาใหม่อย่างรวดเร็วโดยไม่ต้องค้นหาและคัดลอกวางที่อยู่และสิ่งอื่น ๆ อย่างไรก็ตามสำหรับข้อความ (ตัวเลือก -m) ฉันต้องการที่จะให้มันถ้าฉันให้พารามิเตอร์ที่สามจากนั้นที่จะใช้เป็นข้อความมิฉะนั้นข้อความ 'เริ่มต้น' ของ "dev สาขาราคา $ 2" บางคนสามารถอธิบายวิธีการนี้ได้หรือไม่

คำตอบ:


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

ตัวแปรmsgถูกตั้งค่าให้$3ถ้าเป็นไม่ว่างเปล่ามิฉะนั้นจะถูกตั้งค่าเริ่มต้นของ $3 ใช้แล้วเป็นอาร์กิวเมนต์สำหรับdev branch for $2$msg-m


3

จากหน้าคนทุบตี:

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

ในกรณีของคุณคุณจะใช้

$ function svcp () {
  def_msg = "dev สาขาสำหรับ $ 2"
  echo svn คัดลอก "repoaddress / branch / $ 1.0.x" "repoaddress / branch / dev / $ 2" -m \ "$ {3: - $ def_msg} \";
}

$ svcp 2 excited_new_stuff
svn คัดลอก repoaddress / branch / 2.0.x repoaddress / branch / dev / excited_new_stuff -m "dev สาขาสำหรับที่น่าตื่นเต้น _new_stuff"

$ svcp 2 excited_new_stuff "สูตรลับเพื่อการครอบครองโลก"
svn copy repoaddress / branch / 2.0.x repoaddress / branch / dev / adventure_new_stuff -m "สูตรลับเพื่อการครอบครองโลก"
$

คุณสามารถลบคำสั่ง echo ได้หากคุณพอใจกับคำสั่ง svn ที่สร้างขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.