bash exclui pasta ao executar um script

bash exclui pasta ao executar um script

Eu tenho um script em execução em uma pasta. Se um comando falhar, quero excluir a pasta que contém o script. Isso é possível?

Editar: com base no comentário, tirei o que tentei.

Responder1

Eu respondo porque estou preocupado que alguém tente a sugestão do OP ...

um GRANDE aviso: o script mostrado na pergunta exclui o diretório fornecido por pwd, que NÃO é o diretório em que o script está, maso diretório em que o USUÁRIO está ao iniciar o script.

Se alguém fizer isso: (** NÃO TENTE ISSO **) cd ; /path/to/thatscripteles excluiriam TODO O DIRETÓRIO HOME DO USUÁRIO (como "cd" voltou para ele) E TUDO POR BAIXO! ...

(Isso é especialmente ruim em alguns sistemas operacionais onde o homedir do root é "/" ... ).

Em vez disso, no seu script você deve:

mydir="$(cd -P "$(dirname "$0");pwd)"     
      #retrieve the script's absolute path, 
      #even if the script was called via ../relative/path/to/script
echo "the script '$0' is in: ${mydir} "
...
# and then (if you really want this.... but I think it's a bad idea!)
# rm -rf "${mydir:-/tmp/__UNDEFINED__}"  #deletes ${mydir}, if defined
# once you're sure it is correctly reflecting the real script's directory.

Responder2

Sim você pode.

e é isso que vai acontecer:

[root@servidor ~]# mkdir novo&&cd novo
[root@servidor novo]# echo -e "#! /bin/bash\nrm -rf" >remove.sh
[root@servidor novo]# cat remove.sh
#!/bin/bash
rm -rf ~/novo
[root@servidor novo]#ls
remover.sh
[root@servidor novo]# bash remove.sh
[raiz@servidornovo]#ls

(vazio aqui, todos os arquivos e diretórios são excluídos, mas ainda estamos dentro desta "nova" pasta antes de alterarmos nosso diretório)
[raiz@servidornovo]# cd ..
[root@servidor ~]#ls novo
ls: não é possível acessar novo: esse arquivo ou diretório não existe

informação relacionada