【发布时间】:2013-11-25 14:50:40
【问题描述】:
我正在开发一个卸载程序脚本以删除安装该脚本的父文件夹。
/usr/local/Myapplication/Uninstaller/uninstall.sh
所以uninstall.sh 必须这样做:
rm- rf /usr/local/Myapplication
我可以检索卸载所在的文件夹
SYMLINKS=$(readlink -f "$0")
UNINSTALL_PATH=$(dirname "$SYMLINKS")
但我仍然不确定获取父路径的好方法。 我曾想过使用 sed 来删除此路径的“卸载程序”部分,但有没有一种优雅的方法可以获取 Myapplication 文件夹的路径以将其删除?
谢谢
【问题讨论】:
-
在你的脚本中:
cd "$(dirname "$0")" && cd .. && cd .. && [ -d Myapplication/Uninstaller ] && rm -rf Myapplication(我添加了一个检查,我们将要删除的目录包含一个子目录“卸载程序”,但你可以添加一个更好的检查,例如必要的文件在我的应用程序中?)。如果你不知道Myapplication,那么:cd "$(dirname $0)" && cd .. && zepath="$(pwd)" && cd .. && [ -f "${zepath}/somefilesthathouldbehere" ] && rm -rf "${zepath}" -
查看著名的Can a Bash script tell what directory it's stored in? 问题,然后从那里查看
cd ..。