<p>这与Python本身无关,也与Git无关,一切都与shell(命令行解释器)有关。你知道吗</p>
<p>大多数Unix shell都有一些语法特性:</p>
<ul>
<li>单引号是“强引号”,可以防止几乎所有或所有的扩展,并且只以另一个单引号结束。你知道吗</li>
<li>双引号是“弱引号”,可以防止某些扩展,但特别允许变量值替换,如<code>$var</code>和反引号扩展,如<code>`command`</code>。但是请注意,双引号引用单引号,因此<code>"he said 'hello'"</code>保留内部单引号。你知道吗</li>
</ul>
<p>在这种情况下:</p>
<pre><code>"... `python` ..."
</code></pre>
<p>part让shell运行<code>python</code>,看看它在标准输出上产生了什么。无论那是什么,在那一点上都会被取代。你知道吗</p>
<p>(这种反向报价扩展很难使用。如果您想要它,通常最好使用<code>$(...)</code>,因为圆括号可以帮助人们找出命令内部的内容,嵌套变得很明显:<code>reprocess $(process files $(ls))</code>意味着:</p>
<ul>
<li>运行<code>ls</code></li>
<li>使用其输出作为参数,运行<code>process files</code></li>
<li>使用其输出作为参数,运行<code>reprocess</code></li>
</ul>
<p>如果<code>ls</code>打印<code>README hello.txt</code>,这就像运行<code>process files README hello.txt</code>。然后<code>process</code>打印的内容被拼接到<code>reprocess</code>的参数中。)</p>
<p>要完成这里的项目,首先要按顺序运行并拼接所有的后引号表达式。有四对反引号:</p>
<pre><code>`python`
``
`$ python blogplish.py\nThe script is working.`
``
</code></pre>
<p>其中两个是空的,所以它们不运行也不拼接。一个运行<code>python</code>,最后一个运行<code>$</code>,这可能会产生:</p>
<pre><code>$: not found
</code></pre>
<p>但是在shell到达该点之前,它必须首先完成第一个<code>python</code>(然后运行empty命令)。你知道吗</p>
<p>最后,正如其他人提到的,您可以不使用<code>-m</code>运行,或者使用带有<code>-m</code>的强引号变体。还有另一种选择,我们需要<a href="https://www.kernel.org/pub/software/scm/git/docs/git-commit.html" rel="nofollow noreferrer">the ^{<cd20>} documentation</a>:可以使用<code>-F <file></code>或<code> file=<file></code>运行提交来从准备好的文件读取消息。您甚至可以使用<code>-F -</code>从标准输入读取消息:</p>
<pre><code>printf '%s\n\n%s\n' 'commit subject' 'commit message body' | git commit -F -
</code></pre>
<p>例如。你知道吗</p>