我正在撰寫一個 bash 腳本,您可以在部署了游戲的 mediawikis 的服務器上運行該腳本。我想檢查 wiki 是否使用 SMTP。因此,我的腳本的一部分對組態檔中的內容進行了 greps,以證明他們使用 SMTP。問題是,我在多臺服務器上執行此操作,并且我想在一臺服務器上遍歷多個市場。并非所有服務器都共享相同的市場名稱。在我的腳本中,我有包含所有市場名稱的陣列。如果使用 SMTP,我希望我的腳本能夠解決 grep 無法找到要在其中查找的檔案的情況。我該怎么辦?我正在考慮一個額外的命令來在 grepping 之前詢問檔案是否存在。但這并沒有如你所愿
for i in "${markets[@]}"; do
myPATH="/www/${game}_$i/${game}_$i/LocalSettings.php"
grepOut="grep -q 'wgSMTP = array(' "$myPATH""
if grep -q "wgSMTP = array(" "$myPATH"; then
echo -e "The Market ${BLUE}$i${NC} ${GREEN}uses${NC} SMTP."
else
if [[ "$grepOut" == *"No such file or directory"* ]]; then
if [[ "$market" == "all" ]]; then
echo -e "All markets:"
else
echo -e "The Market ${BLUE}$i doesn't${NC} exist on this server."
fi
else
echo -e "The Market ${BLUE}$i${NC} ${RED}doesn't${NC} use SMTP."
fi
fi
done
uj5u.com熱心網友回復:
for i in "${markets[@]}"; do
path="/www/${game}_$i/${game}_$i/LocalSettings.php"
if ! [[ -f "$path" ]]; then
if [[ "$market" == "all" ]]; then
echo -e "All markets:"
else
echo -e "The Market ${BLUE}$i doesn't${NC} exist on this server."
fi
continue
fi
if grep -q 'wgSMTP = array(' "$path"; then
echo -e "The Market ${BLUE}$i${NC} ${GREEN}uses${NC} SMTP."
else
echo -e "The Market ${BLUE}$i${NC} ${RED}doesn't${NC} use SMTP."
fi
done
不確定是否$market應該$i(反之亦然)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/428519.html
下一篇:Sed命令不替換為檔案中的多行
