我想检查隐藏的.git
文件夹是否存在。首先想到的是使用:
if [ -d "~/.git" ]; then
echo "Do stuff"
fi
但-d
显然不会寻找隐藏文件夹。
答案 0 :(得分:7)
问题与波形符在双引号内有关。
要扩展它,您需要将波形符号放在引号之外:
if [ -d ~/".git" ]; then # note tilde outside double quotes!
echo "Do stuff"
fi
或者,或者如下面hek2mgl所述,请使用$HOME
代替~
:
if [ -d "$HOME/.git" ]
来自Tilde expansion中的POSIX:
A"代字号前缀"由一个单词开头的不带引号的字符组成,后面是单词中第一个未引用的字符之前的所有字符,或者如果没有单词中的所有字符。
来自Double Quotes中的POSIX:
用双引号括起字符("")应保留双引号内所有字符的字面值,但字符美元符号,反引号和反斜杠除外,如下所示:
您可以在Unix&amp ;;的Why doesn't the tilde (~) expand inside double quotes?中找到进一步的解释。 Linux Stack。