Obtendo o script para funcionar ao alternar para usuários diferentes

0

Tenho algumas preocupações em relação ao script abaixo, que cria uma pasta por linha a partir do arquivo. Folder.list está localizado em / scripts /. O primeiro script funciona sem problemas, mas o segundo script não funciona ao tentar mudar para um usuário diferente.

- 1º script -

#!/bin/ksh
while read line
do
if [ ! -d $line ]
    then
     mkdir -p $line >/dev/null 2>&1 && echo "Directory $line created."
     else
    echo "Error: $line directory exists!"
   fi
done < folder.list

- 2º roteiro -

#!/bin/ksh
#Switch user
export SUDO_ASKPASS=/keys/askpass.sh
sudo -A su - appuser<<EOF

#Go to folder.list directory
cd /scripts/


while read line
do
if [ ! -d $line ]
    then
     mkdir -p $line >/dev/null 2>&1 && echo "Directory $line created."
    else
    echo "Error: $line directory exists!"
   fi
done < folder.list
EOF
    
por Estongski 13.07.2015 / 10:07

1 resposta

1

Para ser mais claro

considere

cat <<EOF

foo bar $baz

EOF

fubar="Hello World"

cat <<EOF

echo $fubar
print \$fubar

EOF

quando a corrida vai dar

foo bar


echo Hello World
print $fubar

no primeiro gato você notará que a variável $ baz desaparece (desde que não esteja definida).

na segunda execução, defino a variável fubar, é ecoada com seu valor, para echo $fubar escape de $ .

seu segundo script deve ser

#!/bin/ksh
#Switch user
export SUDO_ASKPASS=/keys/askpass.sh
sudo -A su - appuser<<EOF

#Go to folder.list directory
cd /scripts/


while read line
do
if [ ! -d \$line ]
    then
     mkdir -p \$line >/dev/null 2>&1 && echo "Directory \$line created."
    else
    echo "Error: \$line directory exists!"
   fi
done < folder.list
EOF
    
por 13.07.2015 / 10:48