众所周知,env.variable 中的额外空间会导致 bash 脚本中的 / 目录被删除。
#!/bin/bash
...
rm -rf /$MYPATH
Run Code Online (Sandbox Code Playgroud)
如果 $MYPATH 包含像"dir"或"dir /"这样的值,它将导致"rm -rf / dir"或"rm -rf dir /"。并会导致“rm -rf /”
是否有任何最佳做法可以防止这种情况?
jan*_*neb 12
别名 rm='rm --preserve-root'
IIRC --preserve-root 是较新版本的 coreutils 中的默认设置。
总是引用你的论点。即使您知道他们是理智的,在脚本中引用它们也几乎没有什么坏处。
rm -rf "/$FOO"如果 $FOO 有前导空格,则不会删除 / ,而是不会删除任何内容。这确实需要引号出现在带有 的行上rm -rf,当然,不是这样的:
TODEL="/$FOO"
rm -rf $TODEL
Run Code Online (Sandbox Code Playgroud)
如果你做的是,你会回来的麻烦整个负载。
另外,我倾向于认为一个好人:
if [ -d "/$FOO" ] ; then
...
fi
Run Code Online (Sandbox Code Playgroud)
(或者-e如果它只是一个文件)在删除任何东西之前总是一个好主意。
| 归档时间: |
|
| 查看次数: |
3932 次 |
| 最近记录: |