我需要编写一个bash脚本来检查提供给脚本的第一个参数是否与glob模式匹配,在JavaScript RegExp中我将表示为
^[a-zA-Z0-9]+\.[a-zA-Z]{2,}$
换句话说:以一个或多个字母/数字开头,后跟一个句号,后跟2个或更多个字母,然后结束。其他一切都不应该通过测试。
然后我还需要用下划线替换参数中的句点。
到目前为止,我可以检查参数是否为空:
case $1 in
'') echo "No argument supplied" >&2; exit 1 ;;
esac
我认为模式测试需要被否定并放在{case}语句中的''
检查之后,但我不知道如何构造它。任何直接的帮助或在线资源将不胜感激。
我还希望有任何可能的帮助,然后我可以更改提供的有效参数,用下划线替换其中的单个句点。
答案 0 :(得分:3)
同样的正则表达式也适用于BASH。请考虑以下代码段:
re='^[a-zA-Z0-9]+\.[a-zA-Z]{2,}$'
s='abc123.xy'
[[ $s =~ $re ]] && echo "${s/./_}"
abc123_xy