我正在摆弄 log4j 属性文件,并意外地创建了一个包含以下文本的文件夹${foo}
,但是我还有一个名为foo
指向文件夹的环境变量,因此如果我这样做,它会删除指向的rm -rf "${foo}"
文件夹,而不是文件夹。如何指定使用相对路径删除当前目录中的文件夹,而不是删除环境变量指向的文件夹?$foo
${foo}
这是更好地帮助理解的布局
$foo
=/home/user/bar
${foo}
=/home/user/${foo}
答案1
字符串插值会导致这种情况。有多种方法可以有选择地防止这种情况发生。 bash hackers wiki 有一些好例子,但如果您实际上没有使用 bash,具体情况可能会有所不同。
简而言之,您可以防止使用单引号进行插值,也可以转义字符。
[me:~/work]$ export foo=bar
[me:~/work]$ echo $foo
bar
[me:~/work]$ echo "\${foo} is set to ${foo}"
${foo} is set to bar