动机:我正在构建一个命令commitdeploy
,我想接受非常原始的 shell 输入:
bash$ ./commitdeploy this is my commit message
所以我有一个看起来像这样的脚本:
#!/bin/bash
...
git commit -a -m"$@" && ./deploy
产生:
fatal: Paths with -a does not make sense.
这是我所知道的:
$@
是 arg 列表。
"$@"
是否将 arg 列表转换为字符串,使用时应显示为单个 arg
我的问题是,bash 到底想发送git
什么?如果git
接收"$@"
的不是单个 arg,那么我认为我对"$@"
上述的描述是不正确的。看来我需要插入更多引号!
那么,以下哪一项(如果有)是正确的方法,为什么?
选项 1:git commit -a -m"\"$@\""
选项 2:git commit -a -m\""$@"\"