bash удалить папку во время выполнения скрипта

bash удалить папку во время выполнения скрипта

У меня есть скрипт, работающий в папке. Если команда не выполняется, я хочу удалить папку, содержащую скрипт. Это возможно?

Редактировать: основываясь на комментариях, я убрал то, что попробовал.

решение1

Я даю ответ, так как опасаюсь, что кто-нибудь попробует воспользоваться предложением автора...

БОЛЬШОЕ предупреждение: скрипт, показанный в вопросе, удаляет каталог, указанный pwd, который НЕ является каталогом, в котором находится скрипт, нокаталог, в котором находится ПОЛЬЗОВАТЕЛЬ при запуске скрипта.

Если кто-то это сделает: (**НЕ ПЫТАЙТЕСЬ ЭТОГО **) cd ; /path/to/thatscriptони удалят ВЕСЬ ДОМАШНИЙ КАТАЛОГ ПОЛЬЗОВАТЕЛЯ (поскольку "cd" вернется в него) И ВСЕ, ЧТО ПОД НИМ! ...

(Это особенно плохо в некоторых ОС, где домашним каталогом root является "/" ... ).

Вместо этого в вашем сценарии вам следует:

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.

решение2

Да, ты можешь.

и вот что произойдет:

[root@server ~]# mkdir new&&cd new
[root@server new]# echo -e "#! /bin/bash\nrm -rf" >remove.sh
[root@server new]# cat remove.sh
#!/bin/баш
rm -rf ~/новый
[root@server новый]# ls
удалить.sh
[root@server новый]# bash remove.sh
[корень@серверновый]# ls

(здесь пусто, все файлы и каталоги удалены, но мы все еще находимся внутри этой «новой» папки, прежде чем мы изменим наш каталог)
[корень@серверновый]# CD ..
[root@server ~]# ls новый
ls: невозможно получить доступ к новому: Нет такого файла или каталога

Связанный контент