我可以知道为什么在这个shell脚本中使用了“~
”和“+$
”。这是删除早于特定日期的文件的脚本的一部分。
if ! [[ $FILE_AGE =~ "^[0-9]+$" ]]; then
usage
exit 1
我能够理解脚本的这一部分用于检查我们是否输入数字或字母。
答案 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”:
至于美元符号,第一个是因为$FILE_AGE
是Bash中的变量,第二个是因为它是正则表达式的一部分。这是RegEx的一个很棒的网站: