我尝试确定给定路径是否指向文件或目录。我用以下代码尝试了这一点:
#if $mypath is a file
if [[ -f $mypath ]]; then
和
#if mypath is a directory
if [[ -d $mypath ]]; then
当给定路径是绝对路径时,这两个片段都工作正常,例如 /home/user/mydir/... 但是当给定路径以 ~ 开头时,例如 ~/mydir/... 这两个片段都将返回 true ,无论路径是否指向文件或目录。
有谁知道我缺少什么,或者是否有可能?
答案1
我发现了问题。
问题是,我从配置文件中获取路径,因此路径被保存为字符串。通过这一点,波形符未扩展,这就是问题的原因。我的解决方法是手动用 $HOME 替换波形符,即使路径被引用,它也会被扩展。所以基本上:
mypath="${mypath/#\~/$HOME}"
#if $mypath is a file
if [[ -f $mypath ]]; then