Debian-Apache 的 Web 应用程序文档根通常是 ,/var/www/html/
但对于 Arch-Apache 通常是/srv/http/
.
我编写了一个与发行版无关的 LAMP 建立脚本,我需要它来测试面向发行版的文档根目录是什么(基于该目录的存在),而true
我将继续使用它直到最后脚本的。
我通常这样做drt="/var/www/html"
,但我需要让变量控制像这个伪代码一样流动:
drt="/var/www/html XOR /srv/http"
当然,两个或多个选项中只有一个是正确的,并且这应该以异或条件为基础。
在 Bash 中有没有办法做到这一点?
答案1
我需要它来测试面向发行版的文档根目录是什么(基于目录的存在)
从这两个选项中,您可以用来查看它们是否存在:[ -d dir ]
if [ -d /var/www/html ]; then
drt=/var/www/html;
elif [ -d /srv/http ]; then
drt=/srv/http
else
echo "No HTTP server root directory found"
exit 1
fi
或者,使用循环:
drt=
for d in /var/www/html /srv/http; do
if [ -d "$d" ]; then
drt=$d;
break
fi
done
if [ -z "$drt" ]; then
echo "No HTTP server root directory found"
exit 1
fi
当然,所有这些都假设他们实际上使用发行版的默认文档根目录,但情况可能并非如此。让用户有机会验证脚本找到的目录是否正确可能不是一个坏主意。