Intereting Posts
Может ли стек ядра процесса быть пустым, когда процесс выгружается на диск? force rsync, чтобы перезаписать файлы в пункте назначения, даже если они новее Как я могу GPG шифровать только для одного конкретного получателя в mutt? Shell сравнивает два списка и выводит разницу в третьем списке Как заменить строку в файлах, кроме строки, начинается с # Кажется, что chown разрешено не root-пользователю восстановить lvm форматированный раздел Можно ли подключиться к Linux-машине с учетными данными AD без участия компьютера в AD? Zathura: как распечатать указанные страницы Оптимальный способ отслеживания сеанса TTY, который блокирует ресурс? Почему airmon-ng не создает интерфейс мониторинга? Перенос i386 qemu VM на amd64 VM host Используйте find + sed + cp, чтобы найти файлы и скопировать их в каталог с другим именем Как увидеть версию пакета без установки? Что означает tar -pcf?

папка удаления bash при запуске скрипта

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

Изменить. Основываясь на комментарии, я достал то, что пытался.

Я даю ответ, поскольку я волнуюсь, что кто-нибудь попытается предложить ОП …

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

Если вы это сделаете: (** НЕ ПОПРОБУЙТЕ ЭТО **) cd ; /path/to/thatscript cd ; /path/to/thatscript они cd ; /path/to/thatscript ПОЛЬЗОВАТЕЛЯ (поскольку «cd» вернулся в нее) И ВСЕ ПОДДЕРЖИВАНИЕ! …

(Это особенно плохо для некоторых ОС, где homedir для 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. 

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

и вот что будет:

 [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 ~ / new
 [root @ server new] # ls
 remove.sh
 [root @ server new] # bash remove.sh
 [root @ server new ] # ls

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