如何检查bash中的字符串是否来自此格式:exerciseNumber{N}Published
而 {N} 是某个自然数。
例如:
for file in `ls`; do
if (( `isInRequiredFormat ${file}` )); then
echo Yes.
fi
done
我问如何编写函数" isInRequiredFormat"根据我写的格式。
答案 0 :(得分:3)
只需使用(扩展)模式匹配:
shopt -s extglob
for file in *; do
if [[ $file = exerciseNumber@(0|[1-9]*([0-9]))Published ]]; then
echo yes
fi
done
@(x|y)
匹配x
或y
。 *(x)
匹配0次或多次x
次匹配。因此@(0|[1-9]*([0-9]))
匹配0或者匹配非零数字,可选地后跟任意数量的数字。
答案 1 :(得分:0)
你可以使用正则表达式。
for file in `ls`; do
if [[ $file =~ exerciseNumber[:digit:]*Published ]]; then
echo Yes.
fi
done