当我运行以下命令时:
if [ -d "~/Desktop" ]; then echo "exists"; fi
if [ -d "/bin" ]; then echo "exists"; fi
第一个命令没有回音,第二个命令“存在”。为什么bash不理解“〜”?似乎
if [ -d ~/Desktop ]; then echo "exists"; fi
if [[ -d ~/Desktop ]]; then echo "exists"; fi
会奏效。是否可以使用〜? shell是bash。谢谢!
答案 0 :(得分:5)
~
未在引号内展开。尝试
if [ -d "$HOME/Desktop" ]; then echo "exists"; fi
答案 1 :(得分:1)
在您的情况下,即"~/Desktop"
,代字号不会扩展,因为它被视为文字。
使用eval
展开:
dir="~/Desktop"
eval dir=$dir
if [ -d "$dir" ]; then echo "exists"; fi
答案 2 :(得分:1)
尝试用$ HOME替换〜。 仅在波浪线未加引号时发生Tilde扩展
改为使用:
if [ -d "$HOME/Desktop" ]; then echo "exists"; fi