如果没有传递参数,Bash提供默认参数

时间:2015-06-02 09:58:16

标签: bash

我安装了一个名为zeus的程序。它允许我运行这样的命令:

zeus parallel_rspec spec/

parallel_rspec是由zeus运行的命令,而spec/parallel_rspec命令所需的目录。

我在.profile

中添加了别名
alias rsp='zeus parallel_rspec'

所以,我可以运行这样的命令:

rsp spec/ # => equal to `zeus parallel_rspec spec/`

spec/目录很常见(95%的情况)。默认情况下如何设置rsp别名通过spec/文件夹参数(如果我没有传递其他内容,例如spec/blablabla)?

2 个答案:

答案 0 :(得分:6)

Bash具有变量默认值的语法:

${VARNAME:-default}

因此,在您的情况下,您需要使用如下所示的函数:

rsp() { zeus parallel_rspec "${1:-spec/}" }

或者如果您想传递更多选项,以防万一:

rsp() {
  folder="${1:-spec/}"
  shift 1
  zeus parallel_rspec "$folder" "$@"
}

答案 1 :(得分:4)

您应该使用函数:

function rsp {
  [ -z "$1" ] && zeus parallel_rspec spec/ || zeus parallel_rspec "$1"
}

您可以将其添加到个人资料或bashrc中。如果你没有为函数$1提供参数将为空,那么它将使用/spec作为路径,否则它将使用参数