我有一个脚本在文件夹中运行。如果命令失败,我想删除包含脚本的文件夹。那可能吗?
编辑:根据评论,我拿出了我尝试过的内容。
答案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:无法访问新的:没有这样的文件或目录