擅长:python、mysql、java
<p>感谢巴尔马的回答,解决了这个问题。当我出去吃午饭时,我意识到了问题所在</p>
<p>当一个程序被执行时,它会查找一个传统上称为<code>argv</code>的变量,它基本上是一个字符串数组。shell通常负责将字符串转换为字符串数组,因此如果调用此命令:</p>
<pre><code>$ foo a b c eee
</code></pre>
<p>然后,shell将字符串解析为:</p>
<pre><code>argv[0] = "foo"
argv[1] = "a"
argv[2] = "b"
argv[3] = "c"
argv[4] = "eee"
</code></pre>
<p>但如果采用我所使用的方法,结果会是:</p>
<pre><code>argv[0] = "foo"
argv[1] = "a"
argv[2] = ""
argv[3] = ""
argv[4] = "b"
argv[5] = "c"
argv[6] = ""
argv[7] = ""
argv[8] = ""
argv[9] = "eee"
</code></pre>
<p>所以这根绳子没有问题。问题是绕过了shell完成的转换。但是用<code>.split()</code>代替<code>.split(' ')</code>解决了这个问题</p>