私のシナリオは単純です-Mercurialオンラインブックからスクリプトサンプルをコピーし、Windowsコマンドプロンプトに貼り付けています。問題は、本のサンプルが一重引用符で囲まれた文字列を使用していることです。単一引用符で囲まれた文字列がWindowsコマンドプロンプトで渡されると、後者は単一引用符の間のすべてが1つの文字列に属していることを認識しません。
たとえば、次のコマンド:
hg commit -m 'Initial commit'
コマンドプロンプトであるようなぜなら後者扱い、貼り付けることができない'Initial commit'二つの文字列として- 'Initialとcommit'。貼り付け後にコマンドを編集する必要があり、面倒です。
二重引用符と同様に単一引用符を処理するようにWindowsコマンドプロンプトに指示することは可能ですか?
編集
JdeBPからの返信に続いて、私は少し調査しました。概要は次のとおりです。
Mercurialエントリポイントは次のようになります(Pythonプログラムです)。
def run(): "run the command in sys.argv" sys.exit(dispatch(request(sys.argv[1:])))そこで、mercurialで使用されるコマンドライン処理を模倣する小さなpythonプログラムを作成しました。
import sys print sys.argv[1:]Unixコンソールのログは次のとおりです。
[hg@Quake ~]$ python 1.py "1 2 3" ['1 2 3'] [hg@Quake ~]$ python 1.py '1 2 3' ['1 2 3'] [hg@Quake ~]$ python 1.py 1 2 3 ['1', '2', '3'] [hg@Quake ~]$次に、それぞれのWindowsコンソールログを示します。
C:\Work>python 1.py "1 2 3" ['1 2 3'] C:\Work>python 1.py '1 2 3' ["'1", '2', "3'"] C:\Work>python 1.py 1 2 3 ['1', '2', '3'] C:\Work>
Windowsが一重引用符を二重引用符として扱わないことは明らかです。これが私の質問の本質です。