擅长:python、mysql、java
<h2>倒勾子流程</h2>
<p>反勾号是一个<strong>shell特性</strong>,您可能别无选择,只能使用<code>shell=True</code>,但是要传入一个shell命令字符串</strong>,而不是一个参数列表</p>
<p>所以对于你的特定命令(假设它首先起作用)</p>
<pre><code>process = subprocess.Popen("git diff name-only mybranch `git merge-base mybranch develop`", stdout=subprocess.PIPE, shell=True)
</code></pre>
<p>注意,当你调用<code>Popen()</code>时,你得到了一个进程,不应该被称为<code>output</code>IMO</p>
<p><strong>这里有一个简单的例子,可以处理反勾号</strong></p>
^{pr2}$
<p><strong>或者您可以使用$(cmd)语法</strong></p>
<pre><code>>>> process = subprocess.Popen('echo $(pwd)', stdout=subprocess.PIPE, shell=True)
>>> out, err = process.communicate()
>>> out
'/Users/bakkal\n'
</code></pre>
<p><strong>以下是不起作用的(反勾)</strong></p>
<pre><code>>>> process = subprocess.Popen(['echo', '`pwd`'], stdout=subprocess.PIPE, shell=True)
>>> out, err = process.communicate()
>>> out
'\n'
>>> process = subprocess.Popen(['echo', '`pwd`'], stdout=subprocess.PIPE, shell=False)
>>> out, err = process.communicate()
>>> out
'`pwd`\n'
</code></pre>