Vip*_*ula 11 shell filenames quoting
我创建了一个名为“$pattern”的目录,现在每当我尝试删除它时,它都会说
模式:未定义的变量。
我试过了:
$ rm -r $pattern
$ rm -rf $pattern
$ rm "$ option[value='2016']"
Run Code Online (Sandbox Code Playgroud)
Sté*_*las 21
$
、空格'
和[
在大多数 shell 中都是特殊字符。要去除它们的特殊含义,您必须使用 shell 的引用机制。
在我知道的所有 shell 中,您可以使用单引号来引用除单引号、反斜杠和换行符之外的所有字符(在类似 Bourne 的 shell 中,它也引用最后两个,除了\
某些反引号)。
rm -r '$pattern'
Run Code Online (Sandbox Code Playgroud)
应该在最常见的 shell 中工作。
rm -r \$pattern
Run Code Online (Sandbox Code Playgroud)
可以在所有壳中工作(除了类似 Bourne 的内部反引号),但rc
家庭的壳除外。
同样适用于:
rm "\$option[value='2016']"
Run Code Online (Sandbox Code Playgroud)
在rc
-like shell 中,您将使用:
rm '$option[value=''2016'']'
Run Code Online (Sandbox Code Playgroud)
Mc *_*nel 16
如果目录为空:
rmdir \$pattern
Run Code Online (Sandbox Code Playgroud)
除此以外:
rm -r \$pattern
Run Code Online (Sandbox Code Playgroud)
(它将递归删除文件夹包含的任何文件)