Linux 如何在bash脚本中以双引号传递参数
通常使用这3个命令将我的代码推送到repoLinux 如何在bash脚本中以双引号传递参数,linux,bash,shell,Linux,Bash,Shell,通常使用这3个命令将我的代码推送到repo git add . git commit -m $1 git push -u git@myrepo.git master 我尝试将所有3个命令放在一个脚本中,从而一起执行它们 我尝试了./upload_到_github.sh“微小更改” 这是错误的 error: pathspec 'change' did not match any file(s) known to git. 我也试过下面的方法,但没有用 #!/bin/bash #upload_
git add .
git commit -m $1
git push -u git@myrepo.git master
我尝试将所有3个命令放在一个脚本中,从而一起执行它们
我尝试了./upload_到_github.sh“微小更改”
这是错误的
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?您遇到的是分词 你应该做的是:
git commit -m "$1"
然后你像这样调用你的脚本
./upload_to_github 'minor change'
为了理解它的工作方式,我建议您阅读以下内容:它指向和文章。也请阅读这些内容。或者,在脚本中使用
git commit -m "$*"
然后您可以调用脚本,而无需引用参数:
./upload_to_github this is a minor change
$*
参数在引用时(“$*”
)将所有位置参数作为单个字符串连接起来,使用IFS
的第一个字符(空格,除非重新定义)作为分隔符 要传递引用的值,请使用“$1”
。为了传递引用的值,并引用值本身,使用<代码> \“1美元”“< /Cord>”,但我不明白为什么要这样做。我很想知道为什么你不认为使用这样的脚本是有用的。因为你仍然需要逃避原始参数的任何引用。仅仅在开头和结尾加引号并不能保证安全(为了澄清,我在这里讨论的是双引号的情况)。在您的情况下,我认为您只需要“$1”
版本,不是吗?这是真的,但即使我直接从命令行通过commit传递它,我也必须转义。如果我的提交消息有双引号,独立于组合所有3个命令,我将不得不避开双引号。是的,这也会起作用,但是它可能会给一些人带来错误的安全感<代码>上传到“\u github Asterisk*”然后砰的一声!
./upload_to_github this is a minor change