我有以下函数。运行此函数时出现错误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}"
}