我可以知道为什么在此shell脚本中使用“~
”和“+$
”。这是脚本删除比特定日期早的文件的一部分。美元和代字号的使用
if ! [[ $FILE_AGE =~ "^[0-9]+$" ]]; then
usage
exit 1
我能够理解,脚本的这部分用于检查我们是否输入数字或字母。
我可以知道为什么在此shell脚本中使用“~
”和“+$
”。这是脚本删除比特定日期早的文件的一部分。美元和代字号的使用
if ! [[ $FILE_AGE =~ "^[0-9]+$" ]]; then
usage
exit 1
我能够理解,脚本的这部分用于检查我们是否输入数字或字母。
谷歌为“bash脚本等于波浪运营商”:
至于美元符号(S),第一个是因为$FILE_AGE
是Bash中的变量,第二个是因为它是正则表达式的一部分。下面是对正则表达式的一个伟大的网站:
的=~
运营商的意思是“如果左边的字符串右边的正则表达式匹配真,否则为假”。
^[0-9]+$
装置寻找的序列的一个或多个(这就是+
)在范围内的字符0至9(这是[0-9]
),该启动串(^
)和结束在字符串的结束的开始($
)。
这是基本的bash和正则表达式,请参阅the Bash manpage了解更多详情。
=〜是正则表达式匹配
$是正则表达式^[0-9]+$
的一部分,它是指以匹配字符串的末尾
谷歌“正则表达式”的一个教程或指导
=~
是正则表达式匹配运算符,而+
属于[0-9]+
的模式,而不是$
。 该条件测试变量FILE_AGE的值是否与^
(行首/字符串的开头)和$
(行尾的字符串)之间的模式[0-9]+
(一位或多位)匹配。
如果您使用bash版本4,您必须*不*引用右侧。如果引用它,bash会将其解释为文字字符串。它没有超清晰的记录,但[手册页说](http://www.gnu.org/software/bash/manual/bashref.html#index-g_t_005b_005b-57):“模式的任何部分可能被引用强制它被匹配为一个字符串“ – 2012-04-04 18:31:24