为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

沧海一幻觉 2020-02-02 14:38:09
我想检查隐藏.git文件夹是否存在。首先想到的是使用:if [ -d "~/.git" ]; then   echo "Do stuff"fi但-d显然不会寻找隐藏的文件夹。
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

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


为了扩展它,您需要将波浪号放在引号之外:


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。


查看完整回答
反对 回复 2020-02-02
  • 1 回答
  • 0 关注
  • 751 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信