无法测试Bash中是否存在文件
考虑以下Bash脚本:无法测试Bash中是否存在文件,bash,tilde-expansion,Bash,Tilde Expansion,考虑以下Bash脚本: function dosomething { local fname="~/.bash_profile" if [[ -f "$fname" ]]; then echo "proceeding" else echo "skipping" fi } dosomething 虽然我知道~/.bash_配置文件存在,但我总是被“跳过”。为什么?~只有在shell没有引号的情况下才由shell展开。当它被引用时,
function dosomething {
local fname="~/.bash_profile"
if [[ -f "$fname" ]]; then
echo "proceeding"
else
echo "skipping"
fi
}
dosomething
虽然我知道~/.bash_配置文件存在,但我总是被“跳过”。为什么?
~
只有在shell没有引号的情况下才由shell展开。当它被引用时,它是一个文字波浪符号
local fname=~/.bash_profile
~
只有在shell没有引号时才由shell展开。当它被引用时,它是一个文字波浪符号
local fname=~/.bash_profile
谢谢我将使用
'local fname=“/Users/$(whoami)/.bash_profile”
。这似乎比简单地取消引用~
要复杂得多。此外,从技术上讲,它假设用户的主目录在哪里,但这不一定是真的。如果您不想使用~
,请使用$HOME
。谢谢!我将使用'local fname=“/Users/$(whoami)/.bash_profile”
。这似乎比简单地取消引用~
要复杂得多。此外,从技术上讲,它假设用户的主目录在哪里,但这不一定是真的。如果您不想使用~
,请使用$HOME
。