bash スクリプト実行中にフォルダを削除する

bash スクリプト実行中にフォルダを削除する

フォルダー内でスクリプトを実行しています。コマンドが失敗した場合、スクリプトを含むフォルダーを削除したいのですが、それは可能ですか?

編集: コメントに基づいて、試したものを削除しました。

答え1

誰かが OP の提案を試すのではないかと心配なので、回答します...

大きな警告:質問に示されているスクリプトは、pwdスクリプトがあるディレクトリではなく、指定されたディレクトリを削除します。スクリプトを起動したときにユーザーがいるディレクトリ

これを実行すると (** 絶対に試さないでください **)、cd ; /path/to/thatscriptユーザーのホームディレクトリ全体 (「cd」でそこに戻ったため) とその下にあるすべてのものが削除されます。...

(これは、ルートのホームディレクトリが「/」である一部の OS では特に問題になります...)。

代わりに、スクリプトでは次のようにします。

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@サーバー新規]# cat remove.sh
#!/bin/bash
rm -rf ~/new
[root@サーバー新規]# ls
削除.sh
[root@server new]# bash remove.sh
[ルート@サーバー新しい]# ls

(ここは空で、すべてのファイルとディレクトリは削除されますが、ディレクトリを変更する前はまだこの「新しい」フォルダ内にあります)
[ルート@サーバー新しい]# CD ..
[root@server ~]# ls new
ls: 新しいものにアクセスできません: そのようなファイルまたはディレクトリはありません

関連情報