Bash

將 ht 訪問文件放在每個目錄 bash 腳本的 webroot 中

  • October 5, 2017

我正在嘗試編寫一個腳本,該腳本將進入 /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 沒有太多經驗,而且我已經有一段時間需要使用它了。

#!/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),但永遠不會再回來。

引用自:https://unix.stackexchange.com/questions/396319