Command-Line

刪除與環境變數同名的文件夾

  • December 16, 2014

我在搞亂一個 log4j 屬性文件,不小心創建了一個包含以下文本的文件夾,${foo}但是我還有一個名為foo指向文件夾的環境變數,因此如果我這樣做rm -rf "${foo}",它會刪除$foo指向的文件夾,而不是文件夾${foo}。如何指定使用相對路徑刪除目前目錄中的文件夾,而不是刪除環境變數指向的文件夾?

這是更好地幫助理解的佈局

$foo=/home/user/bar

${foo}=/home/user/${foo}

字元串插值會導致這種情況。有許多方法可以選擇性地防止這種情況發生。bash 黑客 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

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