[ "$a" -lt "$b" ],当$a $b 是整数(integer)时,工作得很好,但对于浮点数,会得不到想要的结果,它只会给你“-bash: ***期待整数表达式”的结果。
为了比较两个浮点数,可以写成这样
[ `echo "$a > $b" | bc` -eq 1 ] # -eq 1 或者 -ne 0
zzx@zzx103:/zzxdisk/zzx/Desktop/xuqiang/shell$ echo "1.0 > 2" | bc
0zzx@zzx103:/zzxdisk/zzx/Desktop/xuqiang/shell$ echo "11.0 > 2" | bc1
^[0-9]\\d*$
^[1-9]\d+\.[0-9]{1,2}|0\.[0-9]{1,2}|[1-9]\d+|0$ 数字+两位小数整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^\d{n}$"。只能输入至少n位的数字:"^\d{n,}$"。只能输入m~n位的数字:。"^\d{m,n}$"只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。只能输入非零的正整数:"^\+?[1-9][0-9]*$"。只能输入非零的负整数:"^\-[1-9][]0-9"*$。只能输入长度为3的字符:"^.{3}$"。只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
判断文件扩展名是否符合要求
zzx@zzx11:~$ expr "a.abc" : ".*\.ac"
0zzx@zzx11:~$ expr "a.abc" : ".*\.abc" #非05
* 匹配0次或多次之前字符
+ 匹配1个或多个之前字符
? 匹配0个或1个之前字符
. 匹配任意1个字符
[] 匹配字符集
[^ ] ^表示取反
判断是否整数
1、
read numecho $num|grep -q '^[-]\?[0-9]\+$' && echo yes || echo error
正则表达式^[0-9]+ [+-*\] [0-9]+ = [0-9]+$的解释
1.^代表以xxx开头的行, [0-9]+表示至少出现一个0-9之间的数字。 合起来 就是 必须开头的数字是0-9之间的数字,个数最少一个 2.[+-*\] 表示这是个符号中的其中一个,,也就是 + - * /运算符 3.[0-9]+ 接着。后面跟着必须是 0-9之间的数字。个数最少一个 4 = 等号就表示 =号这个符号 5 [0-9]+$ ..$表示一行的结尾,所以这里的意思必须用0-9之间的字符结果
2、read -p “Pls input:” a
expr $a + 0 >/dev/null # 和零相加 不是整数相加会报错 注意$a为空或者字符时~~~ 提前判断是否空
[ $? -eq 0 ] && echo int || echo chars # 整数不报错$? 为0