2016-07-13 75 views
0

我看到下面的语句在shell脚本

if [ "$file" = "conf" ] || echo $file | grep -q '~$'; then 

什么是~$?我知道$1 $2 [email protected] $$ $*等其他美元符号,但从未见过类似~$的东西。

+1

结尾''〜$''是由两个字符,'〜'和'$'组成的字符串。 – melpomene

+0

我明白了。谢谢。 $ 1是第一个参数..类似什么是$? –

+0

你有没有试过阅读你的shell的手册? – melpomene

回答

3

grep中'〜$'模式匹配所有以'〜'结尾的行。 因此,如果文件名以~结尾,则将执行if部分。 实际上整个echo $file | grep -q '~$'表示: 如果文件名以〜结尾,请尝试匹配,但不要打印匹配结果。 如果匹配,则执行if部分。

'〜$'确实有特殊的含义。即。以〜

+0

不错,忘记了这个微妙的方面。 – sjsam

0

~$是一个由两个字符组成的序列,在bash中没有特别要求。

毕竟你为什么要打扰~$grep -q '~$'

这很明显,~$只是一个模式。

关于

什么是$然后

它具有特殊的意义

  • 变量的环境中使用时,说$var
  • 在正则表达式中使用时说stuff$,匹配以stuff结尾的行。

请检查[ Special Parameters ]

+0

谢谢。 $ 1是第一个参数..类似什么是$? –

+0

为什么downvote为? – sjsam

+0

我不确定是谁给的。 –