Bash
rm -rf 被刪除的文件的目錄被刪除(多個參數)
在我執行的測試環境中:
rm -rf /var/www/html/${domain} /etc/nginx/sites-available/${domain} /etc/nginx/sites-enabled/${domain}
結果是
html
,sites-available
和sites-enabled
目錄連同其所有內容都被刪除了。這句台詞有什麼問題?鑑於我給出了完整的路徑,我錯過了可能導致這種情況的原因,我認為它與
-r
.
如果 domain 的值為空或未定義,則您只需執行,例如
rm -rf /var/www/html
.您可以明確檢查
domain
已定義:if [ -z "$domain" ]; then echo "ERROR: domain is undefined" >&2 exit 1 fi
此外,
set -u
在您的腳本中使用可以防止此類問題。這會導致使用未定義的變數導致錯誤:$ set -u $ echo $undefined_variable bash: undefined_variable: unbound variable