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
我已经花了至少一个小时,并在阳光下尝试了一切。
答案 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如何显示和处理字符串引用,我显然感到困惑。