将我的当前目录与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这样做盒子(两种解决方案)?
把它放在脚本的顶部。将/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
这是一个很好的开始...尝试一些更动态的B/C我有多个网站,不同的文件夹路径到'extensions'文件夹。然而,当我在'$ CURRENT_DIR'上执行'echo'时,我收到了这个警告:'dirname:invalid option - b。尝试使用dirname --help'以获得更多信息.' – hellatan 2011-03-28 15:30:07
您已经在bash登录shell下原样运行了shell片段。 “$ 0”扩展为“-bash”(由sshd设置),dirname将其理解为不支持的选项集群选项组,以“-b”开头。 – pilcrow 2011-03-29 05:06:15
@shellter - 登录时不会发生这种情况。这是我运行的东西,如果我设立了一个新的网站实例。我不是完全管理这个盒子的系统,因为它不在我的联盟ATM中(并且未来的概率= X)。另外,如果我在将来安装新的扩展程序,我可能想要扩展此功能。 – hellatan 2011-03-28 15:22:37