
フォルダー内でスクリプトを実行しています。コマンドが失敗した場合、スクリプトを含むフォルダーを削除したいのですが、それは可能ですか?
編集: コメントに基づいて、試したものを削除しました。
答え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: 新しいものにアクセスできません: そのようなファイルまたはディレクトリはありません