使用美元和波浪形

时间:2012-04-04 17:51:54

标签: shell

我可以知道为什么在这个shell脚本中使用了“~”和“+$”。这是删除早于特定日期的文件的脚本的一部分。

if ! [[ $FILE_AGE =~ "^[0-9]+$" ]]; then
  usage
  exit 1

我能够理解脚本的这一部分用于检查我们是否输入数字或字母。

4 个答案:

答案 0 :(得分:6)

=~运算符表示“如果左边的字符串与右边的正则表达式匹配,则为true,否则为false”。

^[0-9]+$表示查找一个或多个序列(即+),其范围为0到9(即[0-9]),它们开始字符串的开头({ {1}})并在字符串末尾结束(^)。

这是基本的bash和正则表达式,有关详细信息,请参阅the Bash manpage

答案 1 :(得分:1)

=〜是正则表达式匹配

$ 是正则表达式^[0-9]+$的一部分,它意味着匹配字符串的结尾

谷歌“正则表达式”的教程或指南

答案 2 :(得分:1)

=~是正则表达式匹配运算符,+属于模式[0-9]+,而不是$。 条件测试变量FILE_AGE的值是否与[0-9]+(行/字符串的开头)和^(行尾/字符串)之间的模式$(一个或多个数字)匹配

答案 3 :(得分:0)

Google for“Bash script equals tilde operator”:

http://unixdog.com/?p=94

至于美元符号,第一个是因为$FILE_AGE是Bash中的变量,第二个是因为它是正则表达式的一部分。这是RegEx的一个很棒的网站:

http://www.regular-expressions.info/reference.html