bash eliminar carpeta mientras se ejecuta un script

bash eliminar carpeta mientras se ejecuta un script

Tengo un script ejecutándose en una carpeta. Si un comando falla, quiero eliminar la carpeta que contiene el script. ¿Es eso posible?

Editar: según el comentario, saqué lo que probé.

Respuesta1

Doy una respuesta porque me preocupa que alguien intente la sugerencia del OP...

una GRAN advertencia: el script que se muestra en la pregunta elimina el directorio proporcionado por pwd, que NO es el directorio en el que se encuentra el script, peroel directorio en el que se encuentra el USUARIO al iniciar el script.

Si uno hace: (**NO INTENTE ESTO **) cd ; /path/to/thatscripteliminarían TODO EL DIRECTORIO DE INICIO DEL USUARIO (ya que "cd" volvió a aparecer en él) ¡Y TODO DEBAJO! ...

(Esto es especialmente malo en algunos sistemas operativos donde el directorio principal del root es "/"...).

En su lugar, en su script debería:

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.

Respuesta2

Sí tu puedes.

y esto es lo que pasará:

[root@servidor ~]# mkdir nuevo&&cd nuevo
[root@servidor nuevo]# echo -e "#! /bin/bash\nrm -rf" >remove.sh
[root@servidor nuevo]# cat remove.sh
#!/bin/bash
rm -rf ~/nuevo
[root@servidor nuevo]# ls
eliminar.sh
[root@servidor nuevo]# bash remove.sh
[raíz@servidornuevo]# es

(Aquí está vacío, se eliminan todos los archivos y directorios, pero todavía estamos dentro de esta carpeta "nueva" antes de cambiar nuestro directorio)
[raíz@servidornuevo]# cd ..
[root@servidor ~]# es nuevo
ls: no se puede acceder a nuevo: no existe tal archivo o directorio

información relacionada