git无法识别bash发送的参数

时间:2019-04-17 04:14:34

标签: bash git

bash再次把我送到边缘。

此:

DecisionTreeClassifier()

打印此内容:

echo $desc $commit_string

但是,这可以从脚本(甚至从命令行)运行:

description "tmux split-window subcommand.md"

结果:

git commit -m "$desc" "$commit_string"

但这可以从文件所在的目录运行,效果很好:

error: pathspec '"tmux split-window subcommand.md"' did not match any file(s) known to git

我已经花了至少一个小时,并在阳光下尝试了一切。

3 个答案:

答案 0 :(得分:2)

git commit -m "$desc" "$commit_string"中,由于"$desc""$commit_string"之间的间隔,"$commit_string"被解释为路径参数。

尝试

git commit -m "$desc"\ "$commit_string"

git commit -m "$desc $commit_string"

参数名称$commit_string表示这是一条提交消息。但是在阅读您的评论后,我发现它还包含更改后的文件的路径。

因此,如果tmux split-window属于消息,而subcommand.md属于路径,则需要拆分它们。将tmux split-window-m组成,然后将subcommand.md留空。

如果tmux split-window subcommand.md全部属于路径,请尝试:

git commit -m "$desc" -- "$commit_string"

答案 1 :(得分:0)

我相信'tmux split-window subcommand.md'是您要提交的文件的名称。如果该变量显然已经包含了引号,那么您可以使用

git commit -m "$desc" $commit_string

更新: 如何定义变量commit_string?你自己把那些话录了吗?您说echo $desc $commit_string打印description "tmux split-window subcommand.md"。也许您应该将其声明为commit_string="tmux split-window subcommand.md",然后使用git -m "$desc" "$commit_string"

答案 2 :(得分:-1)

在文件名中加上引号可以达到目的:

commit_string=${commit_string//\"}
git commit -m "$desc" "$commit_string"

来自Perl世界,对于bash如何显示和处理字符串引用,我显然感到困惑。