Bedeutet die 'Shell' in 'shell = True' im Subprozess 'bash'?

7

Ich habe mich gefragt, ob subprocess.call("if [ ! -d '{output}' ]; then mkdir -p {output}; fi",shell=True) von sh oder zsh anstelle von bash auf verschiedenen Servern interpretiert wird?

Hat jemand Ideen dazu?

Was muss ich tun, um sicherzustellen, dass es von bash interpretiert wird?

    
Hanfei Sun 16.03.2013, 12:45
quelle

3 Antworten

22

Ссылка

%Vor%

Beachten Sie, dass / bin / sh oft mit etwas anderem verknüpft ist, z. auf ubuntu:

%Vor%

Sie können das Argument executable verwenden, um den Standardwert zu ersetzen:

  

... Wenn shell = True, on   Unix das ausführbare Argument gibt eine Ersatzshell für die   Standard / bin / sh.

%Vor%     
Pavel Anossov 16.03.2013, 12:49
quelle
3

Sie können die Shell Ihrer Wahl explizit aufrufen, aber für den von Ihnen geposteten Beispielcode ist dies nicht der beste Ansatz. Schreiben Sie stattdessen den Code direkt in Python. Siehe hier: mkdir -p-Funktionalität in Python

    
John Zwinck 16.03.2013 12:49
quelle
3

Um die Shell anzugeben, verwenden Sie den ausführbaren Parameter mit shell=True :

  

Wenn shell = True ist, spezifiziert das ausführbare Argument unter Unix a   Ersatzshell für den Standard / bin / sh.

%Vor%

Natürlich ist die Verwendung des ausführbaren Parameters sauberer, aber es ist auch möglich, bash von sh zu rufen:

%Vor%     
unutbu 16.03.2013 12:50
quelle

Tags und Links