如果[[! $ 1 =〜^#]];在unix中

时间:2016-05-04 06:58:56

标签: shell unix scripting

我正在Unix中读取shell脚本。 我发现了以下几行:

if [[ ! $1 =~ ^# ]];   

我理解等号左侧的部分,但~^#的意思是什么。

2 个答案:

答案 0 :(得分:2)

根据http://wiki.bash-hackers.org/syntax/ccmd/conditional_expression=~是:

  

<STRING> =~ <ERE> <STRING>会根据匹配的扩展正则表达式<ERE> - TRUE进行检查

所以^#是一个扩展的正则表达式。由于#不是扩展正则表达式中的特殊字符。 if的含义检查$1中的字符串不是以#开头。所以在命令行上

$ if [[ ! '#' =~ ^# ]]; then echo matches; else echo no match; fi
no match
$ if [[ ! 'b' =~ ^# ]]; then echo matches; else echo no match; fi
matches

答案 1 :(得分:1)

  • ~允许使用POSIX正则表达式匹配()。
  • ^是一个评估行开头的特殊字符

在您的情况下,^#表示以#开头的行。那么您的条件只会处理不以# 开头的行。

在shell脚本中,以#开头的行是注释,不会被shell评估为命令。