5

我想检查隐藏.git文件夹是否存在。首先想到的是使用:

if [ -d "~/.git" ]; then
   echo "Do stuff"
fi

-d显然不寻找隐藏文件夹。

4

1 回答 1

10

问题与波浪号在双引号内有关。

要使其扩展,您需要将波浪号放在引号之外:

if [ -d ~/".git" ]; then   # note tilde outside double quotes!
   echo "Do stuff"
fi

或者,正如 hek2mgl 在下面评论的那样,使用$HOME代替~

if [ -d "$HOME/.git" ]

波浪号扩展中的 POSIX :

“波浪号前缀”由单词开头的不带引号的字符组成,后跟单词中第一个不带引号的字符之前的所有字符,或者如果没有,则由单词中的所有字符组成。

来自双引号中的 POSIX :

用双引号 ( "" ) 括起来的字符应保留双引号内所有字符的字面值,但美元符号、反引号和反斜杠字符除外,如下所示:

您可以在为什么波浪号 (~) 不在双引号内展开?来自 Unix 和 Linux 堆栈。

于 2017-01-26T10:41:03.607 回答