LINUX.ORG.RU

Как передать переменную для использования в другой программе?

 ,


0

1

В текущей сессии назначена переменная. Я запускаю скрипт который использует эту переменную успешно, но внутри этого скрипта есть другой скрипт который эту переменную не видит.

$ pass=example
$ alias
alias exe='prog=$(gpg --batch --yes --passphrase $pass --decrypt ~/secret.gpg); bash -c "$prog"'

Содержимое secret.gpg похоже на

prog=$(gpg --batch --yes --passphrase $pass --decrypt ~/secret2.gpg); bash -c "$prog"

и использует тот же пароль. exe выполняется корректно но внутри $prog пароль уже не видит. Как передать $pass для использования внутри $prog? З.Ы. записывать в файл pass нельзя

Ответ на: комментарий от PunkoIvan

В secret.gpg? Или в alias?

UPD Это помогло в инициирующем коде

$ alias
alias exe='export pass=$pass; prog=$(gpg --batch --yes --passphrase $pass --decrypt ~/secret.gpg); bash -c "$prog"'

Это и есть самый тривиальный способ? export нужен в каждой последующей инициации? Чем он отличается от переменной? Точнее не «чем отличается», а почему не рботает такой вариант?

$ alias
alias exe='pass=$pass; prog=$(gpg --batch --yes --passphrase $pass --decrypt ~/secret.gpg); bash -c "$prog"'
vachicul
() автор топика
Последнее исправление: vachicul (всего исправлений: 2)
Ответ на: комментарий от vachicul

скоуп переменной. export делает переменную доступной для сабшеллов.

Так, если на пальцах.

для теста:

[punk@localhost ~]$ TEVAR=kjewrviueg
[punk@localhost ~]$ echo $TEVAR
kjewrviueg
[punk@localhost ~]$ bash
[punk@localhost ~]$ echo $TEVAR

[punka@localhost ~]$ exit
exit
[punk@localhost ~]$ export TEVAR=kjewrviueg
[punk@localhost ~]$ bash
[punk@localhost ~]$ echo $TEVAR
kjewrviueg
[punk@localhost ~]$ 
PunkoIvan ★★★★
()

Всем спасибо. Разобрался

vachicul
() автор топика

чтобы не мучаться с шеллом - рекомендую освоить Emacs, там декрипт gpg-файлов реализован максимально прозрачно и удобно

anonymous
()
Ответ на: комментарий от anonymous

У меня не gpg. Алиасы не только для этого используются.

vachicul
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.