Я уже некоторое время пытаюсь решить эту проблему, но безуспешно. Суть ситуации в том, что я использую bash-скрипт для отправки параметров в python-скрипт:
Пример:
foo.sh вызывает bar.py .... вызов выглядит так: bar.py $ var1 $ var2 ... $ varn
Затем скрипт python печатает все аргументы, используя массив sys.argv. Скрипт python корректно работает из командной строки, но при вызове из скрипта bash (т.е. 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
Поскольку я предполагаю, что все отступы в питоне верны (пока не знаю, как это делает StackOverflow :)). Эти два представляют суть проблемы, которую я имею. Как уже говорилось, bar.py выводит аргументы правильно, когда он не вызывается из foo.sh.
PS: я хотел сказать "корочка"