我想检查隐藏的.git
文件夹是否存在。首先想到的是使用:
if [ -d "~/.git" ]; then
echo "Do stuff"
fi
但是-d
显然不查找隐藏的文件夹。
问题与波浪号位于双引号内有关。
要扩展它,您需要将波浪号放在引号之外:
if [ -d ~/".git" ]; then # note tilde outside double quotes!
echo "Do stuff"
fi
或者,正如hek2mgl在下面评论的那样,使用$HOME
而不是~
:
if [ -d "$HOME/.git" ]
来自POSIX的Tilde扩展:
A";波浪号前缀";由未加引号的<波浪号>单词开头的字符,后跟第一个未加引号的<斜线>如果不存在<斜线>。
来自POSIX的双引号:
将字符用双引号(")括起来应保留双引号内所有字符的文字值,但美元符号、后引号和反斜杠字符除外,如下所示:
您可以在"为什么波浪号(~)不在双引号内展开?"中找到进一步的解释?来自Unix&Linux堆栈。