bash deletar pasta durante a execução de um script

0

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

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

    
por user1543042 26.04.2017 / 04:31

2 respostas

4

Eu dou uma resposta, pois estou preocupado que alguém tente a sugestão do OP ...

uma GRANDE palavra de aviso: o script mostrado na pergunta exclui o diretório fornecido por pwd , que NÃO é o diretório em que o script está, mas o diretório em que o USER está quando inicia o script .

Se um fizer: (** NÃO TENTE ESTE **) cd ; /path/to/thatscript eles deletariam TODO O HOMEDIRECIONAMENTO DO USUÁRIO (como "cd" voltou para ele) E TUDO DEBAIXO! ...

(Isso é especialmente ruim em alguns SOs 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.
    
por 26.04.2017 / 14:56
1

Sim, você pode.

e é isso que vai acontecer:

[root@server ~]# mkdir new&&cd new
[root@server new]# echo -e "#! /bin/bash\nrm -rf" >remove.sh
[root@server new]# cat remove.sh
#!/bin/bash
rm -rf ~/new
[root@server new]# ls
remove.sh
[root@server new]# bash remove.sh
[root@server new]# ls

(empty here,all file and directory are deleted, but we are still inside this "new" folder before we change our directory)
[root@server new]# cd ..
[root@server ~]# ls new 
ls: cannot access new: No such file or directory
    
por 26.04.2017 / 10:11

Tags