Как из сценария Bash вызвать переменную среды Linux, содержащуюся в командной строке? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть переменная среды:

export qua="key={1234}"

Как мне вызвать $ qua из сценария Bash, который запускает команду Chocolatey?

#!/bin/bash
salt computername chocolatey.install qualys install_args='"\"$qua\""'

Я не могу получить Шоколадный, чтобы правильно прочитать переменную окружения. Я также пробовал:

install_args='"$qua"'

и

install_args=$qua

Команда работает, если я запускаю:

#!/bin/bash
salt computername chocolatey.install qualys install_args="key={1234}"

1 Ответ

0 голосов
/ 27 мая 2020

Как кто-то заметил, sudo создает новую среду, которая не сохраняет ваши экспортированные переменные. Обратите внимание:

$ export this=that
$ env | grep this
this=that
$ sudo env | grep this
$

Чтобы передать переменную, вам нужно что-то вроде:

$ sudo env this=$this | grep this
SUDO_COMMAND=/usr/bin/env this=that
this=that

Итак, в вашем случае ваш сценарий может быть примерно таким:

#!/bin/bash
salt computername chocolatey.install qualys install_args="$ARG"

без лишних кавычек. И вы бы назвали это так:

sudo env ARG="$qua" ./script.sh
...