Как передать переменные аргументы из сценария bash в скрипт Python

Я пытался решить эту проблему для когда-то теперь без везения. Суть ситуации в том, что я использую сценарий 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: Я действительно имел в виду сказать "корочка" семантика, меньший класс чем 16 байтов может быть более эффективно обрабатывается системой как структура.

Я искал аналогичный вопрос в stackoverflow и нашел несколько вопросов, касающихся лучших практик производительности, в ADO.Net , Networking , ] Потоки , но не о лучших практиках производительности в C # (Язык) .

Я хочу добавить еще один совет об использовании целочисленных типов:

Среда выполнения оптимизирует производительность 32-битных целочисленных типов (Int32 и UInt32), поэтому используйте эти типы для счетчики и другие часто используемые интегральные переменные.

12
задан Community 23 May 2017 в 12:01
поделиться