当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么波浪号(〜)不会在双引号内扩展?》经验,为你挑选了1个好方法。

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

if [ -d "~/.git" ]; then
   echo "Do stuff"
fi

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



1> fedorqui..:

问题与波形符在双引号内有关.

要扩展它,您需要将波形符号放在引号之外:

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堆栈.


好答案!或者可以使用"$ {HOME}/.git".
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有