我正在Unix中读取shell脚本。 我发现了以下几行:
if [[ ! $1 =~ ^# ]];
我理解等号左侧的部分,但~^#
的意思是什么。
答案 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正则表达式匹配(regex)。^
是一个评估行开头的特殊字符在您的情况下,^#
表示以#
开头的行。那么您的条件只会处理不以#
开头的行。
在shell脚本中,以#
开头的行是注释,不会被shell
评估为命令。