我在shell脚本中看到了以下语句
if [ "$file" = "conf" ] || echo $file | grep -q '~$'; then
什么是~$
?我知道其他美元符号,例如$1 $2 $@ $$ $*
,但从未见过~$
。
答案 0 :(得分:3)
'〜$' grep中的模式匹配以'〜'结尾的所有行。
因此,如果文件名以if
结尾,则~
部分将被执行。
实际上整个echo $file | grep -q '~$'
意味着:
如果文件名以〜结尾,请尝试匹配,但不要打印匹配的结果。
如果匹配,执行if部分。
'〜$'确实有特殊意义。即。结束〜
答案 1 :(得分:0)
~$
是一个由两个字符组成的序列,在bash
中没有特别的错误。
毕竟为什么你应该对~$
中的grep -q '~$'
感到困扰。
很明显~$
只是制作一种模式。
关于
什么是$ then
它有特殊含义
$var
。stuff$
表示匹配以stuff
结尾的行。