Ich habe versucht, dieses Problem für einige Zeit jetzt ohne Glück zu lösen. Die Kruste der Situation ist, dass ich eine Bash-Skript bin mit Parametern aa Python-Skript senden:Wie man variable Argumente vom Bash-Skript zum Python-Skript übergibt
Beispiel:
foo.sh bar.py ruft .... der Anruf wie folgt aussieht: bar. py $ var1 $ var2 ... $ varn
Das Python-Skript druckt dann alle Argumente mit dem Array sys.argv. Das Python-Skript funktioniert korrekt über die Befehlszeile, aber wenn ich es mit dem Bash-Skript (d. H. Foo.sh) anrufe, erhalte ich keine Ausgabe von bar.py.
Außerdem habe ich foo.sh mit der Option "#!/Bin/bash -x" gestartet und auch die Ausgabe angesehen.
zusammenfassen:
- Zwei Skripte, foo.sh und bar.py
- foo.sh bar.py nennt, Variablen von foo.sh als Argumente zu übergeben
- bar bar.py Py druckt die Argumente es funktioniert mit sys.argv
- bar.py sieht, wenn von seinem eigenen Terminal laufen, funktioniert nicht, wenn aus foo.sh genannt
Jede mögliche Hilfe toll sein!!!!
Danke!
Edit: Hallo, danke für die Antworten, der vollständige Code ist ziemlich lang ... aber ... der Inhalt der beiden Skripte kann
foo.sh _ __ summiert werden _
#!/bin/bash
declare -a list1;
declare -a list2;
list1=("foo" "bar" "please");
list2=("foo" "bar" "please" "help");
declare -a joined;
joined=($(bar.py "${list1[@]}" "${list2[@]}"));
bar.py _ __ _
Wie ich nehme, alle Einrückungen in der Python sind korrekt (nicht sicher, wie StackOverflow tut dies noch :)). Diese beiden repräsentieren den Kern des Problems, das ich habe. Wie bereits erwähnt, druckt bar.py Argumente korrekt, wenn es nicht von foo.sh aufgerufen wird.
PS: Ich wollte sagen: „Kruste“
posten Sie bitte das eigentliche Bash-Skript, es würde es viel einfacher zu sehen, was falsch ist – tobyodavies
Dann machst du etwas sehr falsch. Veröffentlichen Sie minimalen Code, der das Problem aufweist. –
Kann das Python-Skript etwas ausgeben, wenn es vom Bash-Skript aufgerufen wird? Z.B. Wenn Sie "Print" wtf "' am oberen Rand von 'foo.py' hinzufügen, sehen Sie diese Ausgabe, wenn Sie das Bash-Skript ausführen? – intuited