Intereting Posts
Уточнение, пожалуйста, на медленном диске трюк Как обновляется дисплей, когда символ стирания вводится в эмулятор терминала? Что делают параметры ядра acpi_osi = linux и acpi_backlight = vendor? Как я могу использовать «grep» шаблоны в нескольких строках? Файлы имеют один и тот же индекс, но они не связаны друг с другом Установка частоты повторения клавиатуры USB автоматически Какой инструмент вы используете для монтирования гибкого USB-накопителя с плиткой wm Отклонить пакеты в pf после того, как соединение потребляет определенное количество трафика Как установить mtime файла в формате epoch? Проблемы с подключением к Интернету из-за неправильного MAC-адреса (с использованием Linux Mint 17.2) Медленный доступ к btrfs на LVM / Настроить fstab для загрузочного usb Могу ли я управлять графической программой из командной строки? синхронизировать время на удаленном сервере Как остановить редактирование истории, когда я повторно использую и изменяю запись?

Запуск части сценария оболочки как другого пользователя

Этот вопрос задавали раньше, но я не могу заставить его работать.

Одно из решений, которые я пробовал, использует здесь-документ . Я использовал следующий код:

#!/bin/bash su - mv2 <<EOSU DELIVER_BRANCH="development" echo ${DELIVER_BRANCH} exit; EOSU 

Я попробовал вышеуказанный код, бит echo ${DELIVER_BRANCH} ничего не печатает.

Вы хотите:

 #!/bin/bash su - mv2 <<'EOSU' DELIVER_BRANCH="development" echo "$DELIVER_BRANCH" exit; EOSU 

Обратите внимание на одинарные кавычки вокруг первого EOSU . Если вы их опустите, heredoc претерпевает $ -интерполяцию перед передачей, что означает, что "$DELIVER_BRANCH" заменяется на текущее (на оболочку, вызывающее su ) содержимое $DELIVERY_BRANCH , которое пусто:

 DELIVERY_BRANCH=production cat <<'EOSU' DELIVER_BRANCH="development" echo "$DELIVER_BRANCH" exit; EOSU 

печать

 DELIVER_BRANCH="development" echo "$DELIVER_BRANCH" exit; 

в то время как

 DELIVERY_BRANCH=production cat <<EOSU DELIVER_BRANCH="development" echo "$DELIVER_BRANCH" exit; EOSU 

печать

 DELIVER_BRANCH="development" echo production exit;