Atribuindo a saída à variável no script chroot automatizado

0

Para minha vida, não consigo descobrir como fazer chroot por meio de um script e atribuir um valor a uma variável. Ok, então aprendi a fazer chroot e executar comandos a partir de um script sem interromper o fluxo do script:

#!/bin/bash
# Mini script for chrooting into chroot_dir and executing commands.

chroot_dir=$1
cat << EOF | chroot $chroot_dir /bin/bash
sysname=\'hostname\'
echo "You are running script.sh on ${sysname}"
EOF

Ao executar este script, ./script.sh "/chroot_dir/" , recebo a seguinte saída:

You are running script.sh on

Parece que o sysname nunca é atribuído ou o sysname perde seu valor imediatamente. Como atribuo um valor ao sysname usando este método para chroot?

    
por SpaghettiCoder 28.02.2016 / 14:31

1 resposta

1

O motivo é que ${sysname} é avaliado quando o script é lido, e não quando executado posteriormente. Se você colocar uma barra invertida ( \ ) antes do dólar ( $ ), ele deve funcionar melhor. Note que não tem nada a ver com chroot , mas sim é uma característica de bash .

    
por 28.02.2016 / 14:46

Tags