Bash

rm -rf 被刪除的文件的目錄被刪除(多個參數)

  • January 9, 2018

在我執行的測試環境中:

rm -rf /var/www/html/${domain} /etc/nginx/sites-available/${domain} /etc/nginx/sites-enabled/${domain}

結果是html,sites-availablesites-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

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