Мне нужно выдать команду из, например, 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: синтаксическая ошибка: неожиданный конец файла
Любая помощь?