Я пытаюсь решить эту проблему на некоторое время без везения. Корень ситуации заключается в том, что я использую bash script для отправки параметров на python script:
Пример:
foo.sh вызывает bar.py.... вызов выглядит так: bar.py $var1 $var2... $varn
Затем python script распечатывает все аргументы с помощью массива sys.argv. Python script корректно работает из командной строки, но при вызове с bash script (i.e foo.sh) я не получаю вывод из bar.py.
Кроме того, я начал foo.sh с помощью опции "#!/bin/ bash -x" и также просмотрел вывод.
Подводя итог:
- Два скрипта, foo.sh и bar.py
- foo.sh вызывает bar.py, передавая переменные foo.sh в качестве аргументов bar.py
- bar.py печатает аргументы, которые он видит, используя sys.argv
- bar.py работает при запуске из собственного терминала, не работает при вызове из foo.sh
Любая помощь будет потрясающей!!!!
Спасибо!
Изменить: Привет всем, спасибо за ответы, полный код довольно длинный... но... содержимое двух скриптов можно было бы суммировать
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: Я действительно хотел сказать "корочка"