将我的当前目录与unix中的预定义目录进行比较

问题描述:

我正试图编写一个小脚本来安装我当前使用的cms的扩展。但是,当我将我的ssh放入我的盒子时,我不想总想看看我是否在正确的目录中安装了我的扩展。相反,我想只运行一个命令,并在该命令中检查当前工作目录,然后将该目录的结尾与我预先定义的目录进行比较。将我的当前目录与unix中的预定义目录进行比较

例如,我安装我的扩展,你猜对了,extensions文件夹。假设我运行pwd并且吐出/home/site.com/not_extensions_directory/。然后脚本会看到当前目录不是extensions,那么我可以杀死安装并打印出警告。

一个更好的解决办法是让脚本检测,我不是在正确的目录,然后给用户提示

would you like to switch to the "extensions" directory to continue installing (yes/no)?

将正确的语法是什么在UNIX这样做盒子(两种解决方案)?

+0

@shellter - 登录时不会发生这种情况。这是我运行的东西,如果我设立了一个新的网站实例。我不是完全管理这个盒子的系统,因为它不在我的联盟ATM中(并且未来的概率= X)。另外,如果我在将来安装新的扩展程序,我可能想要扩展此功能。 – hellatan 2011-03-28 15:22:37

把它放在脚本的顶部。将/path/to/extensions替换为您的extensions文件夹。

CURRENT_DIR="$(cd "$(dirname "$0")" && pwd)" 

if [ $CURRENT_DIR != /path/to/extensions ]; then 
    echo "This script needs to be run from /path/to/extensions" 
    exit 1 
fi 
+0

这是一个很好的开始...尝试一些更动态的B/C我有多个网站,不同的文件夹路径到'extensions'文件夹。然而,当我在'$ CURRENT_DIR'上执行'echo'时,我收到了这个警告:'dirname:invalid option - b。尝试使用dirname --help'以获得更多信息.' – hellatan 2011-03-28 15:30:07

+1

您已经在bash登录shell下原样运行了shell片段。 “$ 0”扩展为“-bash”(由sshd设置),dirname将其理解为不支持的选项集群选项组,以“-b”开头。 – pilcrow 2011-03-29 05:06:15