rm -rf destruiu diretórios dos arquivos definidos para serem excluídos (vários argumentos)

0

Em um ambiente de teste, executei:

rm -rf /var/www/html/${domain} /etc/nginx/sites-available/${domain} /etc/nginx/sites-enabled/${domain}

O resultado foi que os diretórios html , sites-available e sites-enabled foram excluídos com todo o conteúdo.

O que há de errado com esse fraseado? Dado que eu dei caminhos completos, sinto falta do que pode causar isso, suponho que não tenha nada a ver com a recursividade de -r .

    
por Arcticooling 09.01.2018 / 19:58

1 resposta

6

Se o valor do domínio estiver vazio ou indefinido, você acabou de executar, por exemplo, rm -rf /var/www/html .

Você pode verificar explicitamente que domain está definido:

if [ -z "$domain" ]; then
    echo "ERROR: domain is undefined" >&2
    exit 1
fi

Além disso, usar set -u no seu script pode evitar esse tipo de problema. Isso faz com que o uso de uma variável indefinida resulte em um erro:

$ set -u
$ echo $undefined_variable
bash: undefined_variable: unbound variable
    
por 09.01.2018 / 20:10