将ht访问文件放置在bash脚本各目录的webroot中

将ht访问文件放置在bash脚本各目录的webroot中

我正在尝试编写一个脚本,该脚本将深入到 /home 中的每个子目录并找到其中的 public_html 文件夹。

然后它会检查 .htaccess 是否已经存在,如果确实将其写入文件,如果不存在,则将 .htaccess 文件放入 public_html

现在我有

#!/bin/bash
FILE=.htaccess
for d in */; do
cd "${D}"
cd public_hmtl
if [-e $FILE ]; then
echo "Htaccess exists for "${D}" >> /test/error.txt
else
cp /htaccess ./
fi

这显然是不对的,因为它甚至没有运行。我对 bash 没有太多经验,而且自从我需要使用它以来已经有一段时间了。

答案1

#!/bin/sh

htaccess='/path/to/.htaccess'

for dir in /home/*/public_html/; do
    if [ -e "$dir/.htaccess" ]; then
        print 'htaccess exists in "%s"\n' >&2
    else
        cp "$htaccess" "$dir"
    fi
done

这将遍历public_html每个目录中的所有目录/home,并检查其中是否已有.htaccess文件。如果有,则生成诊断消息,否则.htaccess从某处复制标准。

你会运行这个

$ ./script 2>error.log

您的代码的问题是cd.它将目录更改为目录之一public_html(如果从内部运行/home),但再也不会回来。

相关内容