通常使用这3个命令将我的代码推送到repo
git add .
git commit -m $1
git push -u git@myrepo.git master
我试图将所有3个命令放在一个脚本中,从而一起执行它们
我试过./upload_to_github.sh"小改变"
#!/bin/bash
#upload_to_github.sh
git add .
git commit -m $1
git push -u git@myrepo.git master
它给出了错误
error: pathspec 'change' did not match any file(s) known to git.
我也尝试了以下但没有用的
#!/bin/bash
#upload_to_github.sh
git add .
git commit -m \"$1\"
git push -u git@myrepo.git master
给了我错误
error: pathspec '"change\""' did not match any file(s) known to git.
他们两个似乎都没有工作。如何在脚本中传递$ 1和双引号?
答案 0 :(得分:4)
你遇到的是分词。
你应该做的是:
git commit -m "$1"
然后你调用你的脚本
./upload_to_github 'minor change'
要了解其工作方式,建议您阅读以下内容:Bash pitfall #2指向Word splitting和Glob条款。阅读这些内容。
答案 1 :(得分:2)
或者,在您的脚本中使用
git commit -m "$*"
然后您可以调用脚本而无需引用参数:
./upload_to_github this is a minor change
引用时$*
参数("$*"
)将所有位置参数作为单个字符串连接,使用IFS
的第一个字符(除非重新定义的空格)作为分隔符。 http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters