Tham số tùy chọn trong hàm bash


12

Tôi có một chức năng để nhanh chóng tạo một chi nhánh SVN mới trông giống như vậy

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

Mà tôi sử dụng để nhanh chóng tạo một chi nhánh mới mà không cần phải tra cứu và sao chép dán địa chỉ và một số nội dung khác. Tuy nhiên, đối với tin nhắn (tùy chọn -m), tôi muốn có nó để nếu tôi cung cấp tham số thứ ba thì đó được sử dụng làm tin nhắn, nếu không thì thông báo 'mặc định' của "nhánh nhánh cho $ 2" được sử dụng. Ai đó có thể giải thích làm thế nào điều này được thực hiện?

Câu trả lời:


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

biến msgđược đặt thành $3nếu $3không trống, nếu không, nó được đặt thành giá trị mặc định của dev branch for $2. $msgsau đó được sử dụng làm đối số cho -m.


3

từ trang bash man:

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

trong trường hợp của bạn, bạn sẽ sử dụng

$ hàm svcp () {
  def_msg = "chi nhánh dev cho $ 2"
  echo svn sao chép "repoaddress / chi nhánh / $ 1.0.x" "repoaddress / chi nhánh / dev / $ 2" -m \ "$ {3: - $ def_msg} \";
}

$ svcp 2 sôi động_ew_ ware
svn sao chép tải lại / chi nhánh / 2.0.x repoaddress / chi nhánh / dev / sôi động_ew_ ware -m "chi nhánh dev cho sôi động_ew_ ware"

$ svcp 2 activ_new_ ware "công thức bí mật cho sự thống trị thế giới"
svn sao chép tải lại / chi nhánh / 2.0.x tải lại / chi nhánh / dev / sôi động_ew_ ware -m "công thức bí mật cho sự thống trị thế giới"
$

bạn có thể loại bỏ lệnh echo nếu bạn hài lòng với các lệnh svn được tạo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.