2016-07-11 10 views
0

Derzeit teste ich ein sehr einfaches Stück Code. Ich möchte einfach ein Python-Skript schreiben, das eine Variable setzt und diese Variable dann in ein bash-Skript zur Verwendung übergibt.Errno 13: Python-Variablen an Bash-Skript übergeben

Python Script:

from subprocess import check_call 
a = str(3) 
check_call(["/home/desktop/bash2pyTest/test.sh", a], shell=False) 

Bash-Skript:

#!/bin/bash 
echo "This number was sent from the py script: " $1 

ich andere Q gelesen haben & Wie die zu diesem Thema in Zusammenhang stehen; Ich finde jedoch keine Lösung, die ich konzeptionell verstehe; Daher kann die obige Syntax falsch sein. Ich habe auch ein paar andere Methoden ausprobiert; jedoch erhalte ich weiterhin den folgenden Fehler:

Traceback (most recent call last): 
    File "/home/cassandra/desktop/bash2pyTest/callVar.py", line 3, in <module> 
    check_call(["/home/cassandra/desktop/bash2pyTest/test.sh", a], shell=False) 
    File "/usr/lib64/python2.7/subprocess.py", line 537, in check_call 
    retcode = call(*popenargs, **kwargs) 
    File "/usr/lib64/python2.7/subprocess.py", line 524, in call 
    return Popen(*popenargs, **kwargs).wait() 
    File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__ 
errread, errwrite) 
    File "/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child 
    raise child_exception 
OSError: [Errno 13] Permission denied 

Process finished with exit code 1 

Jede Hilfe würde sehr geschätzt werden. Ich bin ratlos.

Antwort

2

Versuchen

chmod +x /home/desktop/bash2pyTest/test.sh 

in der Schale. Die Datei, die Sie ausführen möchten, ist nicht ausführbar.

Oder eine andere Option in Python-Skript:

check_call(["sh","/home/desktop/bash2pyTest/test.sh", a], shell=False) 
0

Der Fehler besagt, dass die Berechtigung verweigert wird. Ich habe Ihren Code getestet und er funktioniert auf meinem Computer einwandfrei. Sie müssen jedoch sicherstellen, dass der Benutzer, der den Befehl ausführt, über ausreichende Berechtigungen für das Skript test.sh verfügt. Stellen Sie vor allem sicher, dass test.sh über Ausführungsberechtigungen verfügt. Das ist oft die am leichtesten vermisste Erlaubnis.

Verwandte Themen