Я пытался решить эту проблему на некоторое время сейчас, не повезло. Корка ситуации заключается в том, что я использую Баш скрипт для отправки параметров аа питона сценария:Как передать переменные аргумента из сценария bash в скрипт python
Пример:
foo.sh называет bar.py .... вызов выглядит следующим образом: бар. py $ var1 $ var2 ... $ varn
Затем скрипт python выводит все аргументы с использованием массива sys.argv. Сценарий python корректно работает из командной строки, но при вызове с помощью сценария bash (i.e foo.sh) я не получаю никакого вывода из bar.py.
Кроме того, я начал foo.sh с помощью опции «#!/Bin/bash -x» и наблюдал за выходом.
подвести итог:
- два сценария, foo.sh и bar.py
- foo.sh вызывает bar.py, передавая переменные foo.sh в качестве аргументов bar.py
- бар .py печатает аргументы он видит с помощью sys.argv
- bar.py работает при запуске из своего терминала, не работает, когда вызывается из foo.sh
Любая помощь будет будь офигенным!!!!
Спасибо!
Edit: Привет всем, спасибо за ответы, полный код довольно долго ... но ... содержимое двух сценариев можно резюмировать
foo.sh _ __ _
#!/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 _ __ _
#!/bin/python
import sys
for arg in sys.argv:
print arg
Как я полагаю, все отступы в python верны (не уверены, как StackOverflow делает это еще :)). Эти два являются ядром проблемы, с которой я сталкиваюсь. Как указано, bar.py правильно печатает аргументы, когда он не вызывается из foo.sh.
PS: Я хочу сказать, «корочки»
, пожалуйста, напишите фактический скрипт bash, было бы намного легче увидеть, что неправильно – tobyodavies
Тогда вы делаете что-то очень не так. Отправьте минимальный код, который обнаруживает проблему. –
Может ли сценарий python печатать что-либо при вызове из сценария bash? НАПРИМЕР. если вы добавите 'print 'wtf" 'в начало' foo.py', вы видите этот вывод при запуске скрипта bash? – intuited