无法测试Bash中是否存在文件

Nik*_*huk 1 bash tilde-expansion

请考虑以下Bash脚本:

function dosomething {
    local fname="~/.bash_profile"
    if [[ -f "$fname" ]]; then
        echo "proceeding"
    else
        echo "skipping"
    fi
}

dosomething
Run Code Online (Sandbox Code Playgroud)

虽然我知道〜/ .bash_profile存在,但我总是"跳过".为什么?

Joh*_*ica 7

~如果它没有引用,它只会被shell扩展.当它被引用时,它是一个字面的波浪符号.

local fname=~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

  • 这似乎比简单地取消引用`~`更多的工作.此外,它在技术上假设用户的主目录不一定是真的.如果你不想使用`~`,请使用`$ HOME`. (7认同)