为什么波浪号 (~) 不在双引号内扩展?



我想检查隐藏的.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堆栈。

相关内容

  • 没有找到相关文章

最新更新