bash 在运行脚本时删除文件夹

bash 在运行脚本时删除文件夹

我有一个脚本在文件夹中运行。如果命令失败,我想删除包含脚本的文件夹。那可能吗?

编辑:根据评论,我拿出了我尝试过的内容。

答案1

我给出答案是因为我担心有人会尝试OP的建议......

一个重要的警告:问题中显示的脚本删除了给出的目录pwd,该目录不是脚本所在的目录,而是启动脚本时用户所在的目录

如果有人这样做:(**不要尝试这个**)cd ; /path/to/thatscript他们会删除用户的整个主目录(因为“cd”返回到它)以及下面的所有内容! ...

(这在某些 root 的 homedir 是“/”...的操作系统上尤其糟糕)。

相反,在您的脚本中您应该:

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/bash
rm -rf ~/新
[root@服务器新]# ls
删除.sh
[root@server new]# bash remove.sh
[根@服务器新的]# ls

(此处为空,所有文件和目录都被删除,但在更改目录之前我们仍在这个“新”文件夹中)
[根@服务器新的]# 光盘 ..
[root@server ~]# ls new
ls:无法访问新的:没有这样的文件或目录

相关内容