ksh script “EOF” para alterar o usuário

1

Na forma mais simples, estou confuso por que esse script não funciona como esperado, como um script aqui que altera usuários com su - user <<EOF .

su - db2prd<<EOF
PARMDATE=1111111
echo parmdate
echo $PARMDATE
EOF

produz saída:

parmdate

e removendo a parte su / EOF:

PARMDATE=1111111
echo parmdate
echo $PARMDATE

produz:

parmdate
1111111

Não consigo descobrir por que a atribuição de variáveis do ksh não está funcionando e como fazê-lo funcionar, presumindo que o ambiente não tenha sido definido etc. Eu tentei tudo em que posso pesquisar. A atribuição de variáveis parece estar quebrada na parte su - <<EOF .

Este é apenas um exemplo de um script muito maior que alterna os usuários para algumas atividades de manutenção.

    
por DWill 04.03.2015 / 03:02

1 resposta

1

Variáveis são interpretadas em um doc aqui ( <<... ), então você precisa escapar daquelas que você não quer avaliar ainda.

su - db2prd<<EOF
PARMDATE=1111111
echo parmdate
echo \$PARMDATE
EOF

Ou melhor, cite o delimitador (aqui EOF ) para dizer ao seu shell para não executar expansões dentro do documento here:

su - db2prd<<'EOF'
PARMDATE=1111111
echo parmdate
echo $PARMDATE
EOF
    
por 04.03.2015 / 03:35