Ich weiß, dass ich mit meinem Bash-Skript ein Python-Skript ausführen kann, indem ich Folgendes verwende:
python python_script.py
Aber was ist, wenn ich eine Variable / ein Argument aus meinem Bash-Skript an mein Python-Skript übergeben wollte? Wie kann ich das machen?
Grundsätzlich berechnet bash einen Dateinamen und dann lädt Python ihn hoch, aber ich muss den Dateinamen von bash an python senden, wenn ich ihn aufrufe.
python python_script.py
in Ihrer Standard-Shell in Debian ausführen, verwenden Sie Bash bereits ... also tun Sie es einfach in Ihrem Bash-Skript:python python_script.py arg1 arg2 ...
Antworten:
Um ein Python-Skript in einem Bash-Skript auszuführen, müssen Sie denselben Befehl wie in einem Terminal aufrufen. Zum Beispiel
Um auf diese Variablen in Python zugreifen zu können, benötigen Sie
quelle
Verwenden
und in Ihrem Python-Skript
quelle
Neben
sys.argv
nehmen auch einen Blick auf das argparse - Modul, das für Skripte definieren Optionen und Argumente hilft.quelle
Eingebettete Option:
Wickeln Sie Python-Code in eine Bash-Funktion.
Verwenden Sie Umgebungsvariablen, um Daten an Ihr eingebettetes Python-Skript zu übergeben.
http://bhfsteve.blogspot.se/2014/07/embedding-python-in-bash-scripts.html
quelle
Ich habe ein Bash-Skript, das eine kleine Python-Routine aufruft, um ein Nachrichtenfenster anzuzeigen. Da ich killall verwenden muss, um das Python-Skript zu stoppen, kann ich die obige Methode nicht verwenden, da dies dann bedeuten würde, killall python auszuführen, wodurch andere Python-Programme entfernt werden könnten, die ich verwende
pythonprog.py "$argument"
& # Das & gibt die Steuerung direkt an das Bash-Skript zurück und muss sich daher außerhalb der Backticks befinden. In der Vorschau dieser Nachricht wird sie aus irgendeinem Grund ohne "` "auf beiden Seiten des Befehls angezeigt.Solange das Python-Skript von der CLI aus nach Namen und nicht nach Python pythonprog.py ausgeführt wird, funktioniert dies innerhalb des Skripts. Wenn Sie mehr als ein Argument benötigen, verwenden Sie einfach ein Leerzeichen zwischen den einzelnen Argumenten in Anführungszeichen.
quelle
Verwendung im Skript:
oder
Das Skript wird ohne Ausgabe ausgeführt.
quelle
und schauen Sie sich das getopt- Modul an. Es funktioniert ganz gut für mich!
quelle