Mad*_*den 16 bash parameter function
我有一个功能可以快速创建一个新的 SVN 分支,看起来像这样
function svcp() { svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "dev branch for $2"; }
Run Code Online (Sandbox Code Playgroud)
我用它来快速创建一个新分支,而无需查找和复制粘贴地址和其他一些东西。但是,对于消息(-m 选项),我想要它,以便如果我提供第三个参数,则将其用作消息,否则使用“dev branch for $2”的“默认”消息。有人可以解释这是如何完成的吗?
cas*_*cas 30
function svcp() {
msg=${3:-dev branch for $2}
svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "$msg";
}
Run Code Online (Sandbox Code Playgroud)
变量msg设置为$3if$3为非空,否则设置为默认值dev branch for $2。 $msg然后用作 的参数-m。
小智 6
从 bash 手册页:
Run Code Online (Sandbox Code Playgroud)${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 美元的开发分支"
echo svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m \"${3:-$def_msg}\";
}
$ svcp 2令人兴奋的新东西
svn copy repoaddress/branch/2.0.x repoaddress/branch/dev/exciting_new_stuff -m “exciting_new_stuff 的开发分支”
$ svcp 2activation_new_stuff “统治世界的秘方”
svn copy repoaddress/branch/2.0.x repoaddress/branch/dev/exciting_new_stuff -m “统治世界的秘方”
$
如果您对生成的 svn 命令感到满意,可以删除 echo 命令