Как передать массив из python в сценарий оболочки и выполнить его?

У меня есть массив HSPACE который определяется внутри скрипта python. Я пытаюсь передать этот массив в сценарий оболочки «arraytest» и выполнить его из самого python. Я пытаюсь использовать следующий фрагмент кода, но он, похоже, не работает:

 HSPACE=[0.01, 0.009, 0.008, 0.007] subprocess.call(["./arraytest"], HSPACE, shell=True) 

Содержимое сценария оболочки:

 #!/bin/bash for i in ${HSPACE[@]} do echo $i done 

One Solution collect form web for “Как передать массив из python в сценарий оболочки и выполнить его?”

Легким ответом является передача каждой записи массива в виде буквальной записи argv:

 subprocess.call(['./arraytest'] + [str(s) for s in HSPACE], shell=False) 

… после этого …

 #!/bin/bash printf 'hspace array entry: %q\n' "$@" 

Другой подход – передать массив как поток с разделителями NUL на stdin:

 p = subprocess.Popen(['./arraytest'], shell=False, stdin=subprocess.PIPE) p.communicate('\0'.join(str(n) for n in HSPACE) + '\0') 

… и в вашей оболочке:

 #!/bin/bash arr=( ) while IFS= read -r -d '' entry; do arr+=( "$entry" ) done printf 'hspace array entry: %q\n' "${arr[@]}" 
  • Массовое переименование файлов на основе поиска
  • как просмотреть содержимое определенного файла в архиве .tar.gz без разархивирования содержимого?
  • BLAS / LAPACK не установлен: как его установить?
  • Почему subprocess.Popen returncode отличается для подобных команд с bash
  • Как я могу получить (и установить) текущую позицию курсора bash при использовании readline python?
  • Сбор возвращаемых значений из функций python в bash
  • Сгенерировать и выполнить R, Python и т. Д., Скрипт из скрипта bash
  • Задача cron не выводится на nohup.out
  • Python - лучший язык программирования в мире.