如何设置 bash_aliases 中参数的默认值

如何设置 bash_aliases 中参数的默认值

我有以下函数。运行此函数时出现错误Default Message command not found

commit {
    ${1:-Default Message}
    echo "git add ."
    git commit -m '$1'
}

如果没有提供参数,我只是想在最后一个命令中设置默认字符串值。

这就是我打算在终端中使用该功能的方式:

commit 结果应该是:git commit -m 'Default Message'

commit some random message 结果应该是:git commit -m 'some random message'

请指导。

答案1

这里有一些问题:

  • Bash 中的函数定义需要()在函数名称后面
  • ${1:-Default Message} 返回$1(如果给出的话) 的内容或者给定的默认值。注意:返回也就是说,它的效果就如同您这样写:

    if [ -n "$1" ]; then
        $1
    else
        Default Message
    fi
    

    bash 很笨,所以它会尝试简单地运行“Default Message”作为命令。显然,没有这样的命令,因此会出现错误消息。

  • 最后一行(git commit -m '$1')将使用文字$1(读作:美元一)作为提交消息,因为使用了单引号并且它们不会扩展其中的变量。

尝试一下这个:

commit() {
    msg="${1:-Default Message}"
    echo "git add ."
    git commit -m "$msg"
}

或者:

commit() {
    echo "git add ."
    git commit -m "${1:-Default Message}"
}

相关内容