我的bashrc文件中有这个简单的功能
function aupgrade {
cat ~/.bash_aliases > ~/bash/.bash_aliases
cd ~/bash
git add .
if [[ $1 == "" ]]; then
git commit -m "Update"
else
git commit -m "$1"
fi
git push origin master
cd - 1>/dev/null
}
此功能的目的在于,这是预期的行为:
首先,用cat ~/.bash_aliases
第二,进入~/bash
目录,该目录是git仓库
第三,暂存所有更改
第四,如果在调用aupgrade
函数时以下参数无效,则只需提交“ Update”消息,但如果用户写了一个参数,例如{{1} },使用诸如消息aupgrade "New commit!"
第五,推送更改
第六,返回上一个目录
但是,它不会那样做,而只会这样做:
首先,用git commit -m $1
第二,进入cat ~/.bash_aliases
目录,该目录是git仓库
第三,暂存所有更改
第四,尽管有参数,也请提交“ Update”消息
第五,推送更改
第六,返回上一个目录
这很奇怪。这看起来是~/bash
行的乘积。这不是有条件的问题,因为当我编写这样的另一个函数但没有git push origin master
行时,它可以按预期工作。
为什么会这样?有什么解决办法吗?