передавая переменную ей в команду su в сценарии bash

Мне нужно выдать команду из, например, root пользователю zimbra. Проблема в том, что мне также нужно установить переменную env и некоторые другие переменные.

Из командной строки я делаю это так (это команда, используемая для создания почтового ящика в Zimbra):

su - zimbra -c 'export LC_ALL=nb_NO.UTF-8 && p="user.name" && domain="@example.com" && displayname="User Name" && givenname="User" && /opt/zimbra/bin/zmprov ca $p$domain "" cn "$displayname" displayName "$displayname" givenName "$givenname" zimbraPrefFromDisplay "$displayname"'

Все отлично работает. Проблема возникает, когда я пытаюсь автоматизировать процесс в сценарии bash. Я не могу (или не знаю, как) передать переменную, сгенерированную внутри скрипта, в команду su.

#!/bin/bash
var="something";
su - zimbra -c 'export LC_ALL=nb_NO.UTF-8 && echo $var'

Когда я использую скрипт выше, он не работает, потому что $ var объявляется для root пользователя, а не пользователя zimbra. Есть ли способ обмануть это?

Я попытался обойти это, сначала создав строку:

#!/bin/bash
var="something";
string="'export LC_ALL=nb_NO.UTF-8 && echo $var'";
su - zimbra -c $string

, но когда я это сделаю, я получаю

LC_ALL = nb_NO.UTF-8: -c: строка 0: неожиданный EOF при поиске соответствия `'' LC_ALL = nb_NO.UTF-8: -c: строка 1: синтаксическая ошибка: неожиданный конец файла

Любая помощь?

0
задан 13 August 2018 в 15:04

0 ответов

Другие вопросы по тегам:

Похожие вопросы: