Executando uma parte do shell script como um usuário diferente

2

Esta pergunta foi feita antes, mas parece que não consigo dar certo.

Uma das soluções que tentei é usar o aqui-documento . Eu usei o seguinte código:

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

Eu tentei o código acima, o bit echo ${DELIVER_BRANCH} não imprime nada.

    
por user3288346 06.04.2016 / 12:25

1 resposta

7

Você quer:

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

Observe as aspas simples ao redor do primeiro EOSU . Se você os omitir, o heredoc passa por $ -interpolação antes de ser passado, o que significa que "$DELIVER_BRANCH" é substituído pelo conteúdo atual (para o shell invocando su ) de $DELIVERY_BRANCH , que está vazio:

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

imprime

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

enquanto

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

imprime

DELIVER_BRANCH="development"
echo production
exit;
    
por 06.04.2016 / 12:32