はbashで正常に動作プロセス置換のおもちゃの例である:シェルとPythonのサブプロセスから呼び出されたときプロセス置換は、Pythonのサブプロセスがshell = Trueで許可していませんか?ここで
$ wc -l <(pwd)
1 /proc/self/fd/11
なぜ同じコマンドをTrue =構文エラーを与えるのでしょうか?
>>> subprocess.check_call('wc -l <(pwd)', shell=True)
/bin/sh: 1: Syntax error: "(" unexpected
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/path/to/my/python/lib/python3.5/subprocess.py", line 581, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'wc -l <(pwd)' returned non-zero exit status 2
'shell = True'はBashを使用していません。 '/ bin/sh'を使っています。 (どこかでそれが設定可能かどうかはわかりません) – user2357112
それは問題です。ありがとう! –
正確な相違点については、https://stackoverflow.com/questions/5725296/difference-between-sh-and-bashも参照してください。 – tripleee