我不确定代码应该如何编写,但我想测试文件/文件夹的命名模式,例如:
如果 [ -d $i ] && [ 正则表达式([0-9].,$i) { 做一点事 }
我希望它检查文件/文件夹是否是目录,并且它的名称是数字(即 1 或 101 或 10007)...
答案1
[
不能使用正则表达式。但是[[
可以:
if [[ -d $i -a $i =~ ^[0-9]+$ ]] ; then
...
fi
答案2
如果您使用的是 Bash 3.2 之前的版本,则正则表达式匹配运算符=~
要么不存在,要么工作方式不同,要么有错误。在这种情况下,您可以使用此 glob 扩展形式(或者如果您使用的 POSIX shell 没有它)。
case $i in
*[^0-9]*)
do_not_a_number_stuff
;;
*)
if [ -d "$i" ]
then
do_something
fi
;;
esac