多语言展示
当前在线:1136今日阅读:103今日分享:49

linux的if判断条件中能否用通配符

假设你的当前目录下有9个目录,每个目录里有若干张图片,都是以.jpg结尾的,但有的没有图片。你想做一个判断,当图片存在时就删除它,否则什么也不做,那么你可能会用if语句来结合通配符来实现,例如:#!/bin/bashif [ -f ./*/*.jpg ]; thenrm ./*/*.jpgfiexit 0那么运行之后多半会报错,显示为[: too many arguments.难道 if []里面不能用通配符吗?原因就是,有太多的结果匹配你的要求,由于有好多图片都是满足./*/*.jpg这个要求,所以你相当于是给 if[] 当中输入了好多判断条件,你就是不断的在问系统,这个图片在不在,那个图片在不在,另一个图片又在不在。。。而且这些判断条件之间也没有讲清楚 “或且非”的关系, 所以 if[] 不知道你想要干什么,因为 if[] 只能接受一条判断语句,而你给你它许多条,所以才会报错。当然如果你这9个目录里只有1张图片,那么你用这个写法,就是可以运行的,只有这一个特例是可以的,其他情况都不行,所以以后遇到这种情况,不要使用 if[] 体系,而应该直接用 rm ./*/*.jpg 就好!
推荐信息