หากsleep.sh
มี shebang #!/bin/sh
และมีการอนุญาตไฟล์ที่เหมาะสมให้รันchmod u+rx sleep.sh
เพื่อให้แน่ใจและอยู่ใน$PATH
รหัสของคุณควรทำงานตามที่เป็นอยู่
import subprocess
rc = subprocess.call("sleep.sh")
หากสคริปต์ไม่ได้อยู่ใน PATH ให้ระบุเส้นทางแบบเต็มเช่นหากอยู่ในไดเร็กทอรีการทำงานปัจจุบัน:
from subprocess import call
rc = call("./sleep.sh")
หากสคริปต์ไม่มี shebang คุณต้องระบุshell=True
:
rc = call("./sleep.sh", shell=True)
หากสคริปต์ไม่มีสิทธิ์ในการเรียกใช้งานและคุณไม่สามารถเปลี่ยนแปลงได้เช่นการรันos.chmod('sleep.sh', 0o755)
คุณสามารถอ่านสคริปต์เป็นไฟล์ข้อความและส่งสตริงไปยังsubprocess
โมดูลแทน:
with open('sleep.sh', 'rb') as file:
script = file.read()
rc = call(script, shell=True)