And*_*wby 2 regex bash if-statement
我正在尝试制定一个循环,让我忽略一些匹配项。到目前为止,我有:
for d in /home/chambres/web/x.org/public_html/2018/js/lib/*.js ; do
if [[ $d =~ /*.min.js/ ]];
then
echo "ignore $d"
else
filename="${d##*/}"
echo "$d"
#echo "$filename"
fi
done
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,它们似乎仍然包含在内。我究竟做错了什么?
/home/chambres/web/x.org/public_html/2018/js/lib/underscore.js.min.js
/home/chambres/web/x.org/public_html/2018/js/lib/tiny-slider.js
/home/chambres/web/x.org/public_html/2018/js/lib/tiny-slider.js.min.js
/home/chambres/web/x.org/public_html/2018/js/lib/underscore.js
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我是 bash 的新手,所以请善待;)
在 Bash 中,正则表达式不包含在 中/,因此您应该将测试更改为:
if [[ $d =~ \.min\.js$ ]]
Run Code Online (Sandbox Code Playgroud)
除了删除封闭的/,我已经转义了.(否则他们会匹配任何字符)并添加了一个$来匹配字符串的结尾。
但实际上,在这种情况下,您可以使用更简单(且速度稍快)的 glob 匹配:
if [[ $d = *.min.js ]]
Run Code Online (Sandbox Code Playgroud)
这匹配任何以.min.js.
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |