rm -rf 销毁要删除的文件的目录(多个参数)

Arc*_*ing 0 scripting bash testing rm deleted-files

在我执行的测试环境中:

rm -rf /var/www/html/${domain} /etc/nginx/sites-available/${domain} /etc/nginx/sites-enabled/${domain}
Run Code Online (Sandbox Code Playgroud)

其结果是htmlsites-availablesites-enabled目录,用他们所有的内容删除。

这句话有什么问题?鉴于我给出了完整路径,我想念可能导致这种情况的原因,我认为这与-r.

lar*_*sks 6

如果 domain 的值为空或未定义,您只需运行,例如,rm -rf /var/www/html.

您可以明确检查domain已定义:

if [ -z "$domain" ]; then
    echo "ERROR: domain is undefined" >&2
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

此外,set -u在您的脚本中使用可以防止此类问题。这会导致使用未定义的变量导致错误:

$ set -u
$ echo $undefined_variable
bash: undefined_variable: unbound variable
Run Code Online (Sandbox Code Playgroud)

  • 还有便宜但不那么冗长和侵入性保护的选项`domain=${domain:-emptyvar}` (2认同)