Вы, вероятно, пропускаете инструменты GTK-Doc для генерации документации.
Один способ узнать эти зависимости путем взгляда на то, что дистрибутивы делают для создания пакета. Например, на Debian, в debian/control
, зависимости (кроме Debian-определенного материала)
m4, libltdl-dev | libltdl7-dev (> = 2.2.6), libasound2-dev, libvorbis-dev, libgtk2.0-dev (> = 2.20), tdb-dev (> 1.1), gtk-doc-tools, libpulse-dev (> = 0.9.11), libgstreamer0.10-dev (> = 0.10.15)
Кажется, что самый легкий путь состоит в том, чтобы перенаправить вывод в файл и затем получать этот файл.
В сценарии это будет похоже:
#!/bin/sh
program > tmp_file
. tmp_file
rm tmp_file
echo $any_var_you_need
В bash
можно сделать это без временного файла вообще:
#!/bin/bash
source <(program)
echo $any_var_you_need
Единственная теоретическая дыра в системе безопасности - то, что программа может произвести некоторый опасный код, который уничтожит что-то.
Можно избежать его с проверкой program
вывод с sed
чтобы быть уверенным, это удовлетворяет только переменные:
program | sed '/^\s*[a-zA-Z_.][_a-zA-Z0-9]*=[a-zA-Z0-9_-+.,]*/!d;s/ .*//;'
это удалит все строки, который походит не на переменные (может быть отредактирован в Вашем вкусе).
С тем же протестом безопасности как @rush упомянутый, Вы могли просто предварительно ожидать eval
к Вашей команде. Конечно, в обоих случаях, что-либо, что не является допустимым синтаксисом удара, произведет ошибку (что можно проигнорировать).
Пример:
$ echo 'a=1
> b=2
> c=1234'
a=1
b=2
c=1234
$ echo $b
$ eval echo 'a=1
b=2
c=1234'
a=1
$ echo $b
2