我想检查隐藏.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 in Tilde扩展:
"波浪号前缀"由单词开头的不带引号的字符组成,后跟单词中第一个未引用的字符之前的所有字符,或者如果没有则单词中的所有字符.
来自POSIX的双引号:
用双引号("")括起字符应保留双引号内所有字符的字面值,但字符美元符号,反引号和反斜杠除外,如下所示:
你可以找到进一步的解释为什么波形符号(〜)不会在双引号内展开?来自Unix和Linux堆栈.