猿问

为什么波浪号(〜)不能用双引号引起来?

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


if [ -d "~/.git" ]; then

   echo "Do stuff"

fi

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


沧海一幻觉
浏览 752回答 1
1回答

饮歌长啸

问题与波浪号在双引号内有关。为了扩展它,您需要将波浪号放在引号之外:if [ -d ~/".git" ]; then   # note tilde outside double quotes!   echo "Do stuff"fi或者,如下面hek2mgl所述,使用$HOME代替~:if [ -d "$HOME/.git" ]从Tilde的 POSIX 扩展中:“波浪号前缀”由单词开头的未加引号的字符组成,后跟单词中第一个未加引号的所有字符,或者如果没有则由单词中的所有字符组成。从POSIX中用双引号引起来:用双引号(“”)引起来的字符应保留双引号中所有字符的文字值,但以下字符除外:美元符号,反引号和反斜杠:您可以在为什么代字号(〜)不能在双引号内展开找到更多说明。来自Unix&Linux Stack。
随时随地看视频慕课网APP
我要回答