subprocess.call("if [ ! -d '{output}' ]; then mkdir -p {output}; fi",shell=True)
がbash
の代わりにsh
またはzsh
と解釈されるかどうかは別のサーバーにありますか?サブプロセスの `shell = True`の` shell`は `bash`を意味していますか?
誰でもこれについてのアイデアはありますか?
bash
によって解釈されるようにするにはどうすればよいですか?
subprocess.call("if [ ! -d '{output}' ]; then mkdir -p {output}; fi",shell=True)
がbash
の代わりにsh
またはzsh
と解釈されるかどうかは別のサーバーにありますか?サブプロセスの `shell = True`の` shell`は `bash`を意味していますか?
誰でもこれについてのアイデアはありますか?
bash
によって解釈されるようにするにはどうすればよいですか?
http://docs.python.org/2/library/subprocess.html
/binに/ shのは、多くの場合、別の何か、例えばにシンボリックリンクされOn Unix with shell=True, the shell defaults to /bin/sh
注意Ubuntuの上:
$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Mar 29 2012 /bin/sh -> dash
デフォルトを交換するexecutable
引数を使用することができます。
...シェルは=真、 Unix上で実行可能な引数が/ デフォルトの交換シェルを指定した場合bin/sh。
subprocess.call("if [ ! -d '{output}' ]; then mkdir -p {output}; fi",
shell=True,
executable="/bin/bash")
あなたは明示的にお好みのシェルを起動することができますが、サンプルコードのために、あなたは、これが最善のアプローチではありません投稿しました。代わりにPythonでコードを直接記述してください。ここを参照してください:mkdir -p functionality in Python
はシェルを指定するには、use the executable parametershell=True
で:
シェル= Trueのは、Unix上で実行可能な引数はデフォルトの/ binに/ shのための 代替シェルを指定した場合。
In [26]: subprocess.call("if [ ! -d '{output}' ]; then mkdir -p {output}; fi", shell=True, executable='/bin/bash')
Out[26]: 0
明らかに、実行可能なパラメータを使用するときれいですが、SHからのbashを呼び出すことも可能である:
In [27]: subprocess.call('''bash -c "if [ ! -d '{output}' ]; then mkdir -p {output}; fi"''', shell=True)
Out[27]: 0
それは意味 - デフォルトのシェルを使用する - つまり、デフォルトが何であれ –
@JonClementsありがとう、Jon!しかし、それがbashによって解釈されていることを確認するために私は何をすべきですか? –
@ Firegun '/ usr/bin/env bash'を呼び出して、コマンドとして入力します。 – millimoose