算术运算
相对于其他编程语言来说在bash里面不能直接以变量加上变量的形式来表现;比如我们先声明两个变量num1和num2然后再做运算。
num1=2num2=3echo "$num1+$num2"2+3
这里我们显示的结果直接为2+3只是做了变量的替换,而不是做两个变量的加法运算;在bash里面变量默认是以字符串类型来存储的;就算我们在这里声明的这两个变量为整数也不会做运算;declare命令-i
可以声明我们定义的变量为整型bash也只会做变量替换;
declare -i num3=9declare -i num4=1echo “$num3+$unm4”9+1
对于bash来说要做算数运算必须使用特殊的算术运算格式:
1.使用let命令;
例如
let $num1+$num2
这里不会显示任何数据let命令默认是不会输出结果至屏幕的;所以我们这里需要做变量赋值;将$num1+$num2的运算后的值,赋值个另外一个变量sum;
let $sum=$num1+$unm2echo “$sum”5
2.算术运算表达式用[]直接赋值给一个变量;这里可以赋值也可以直接使用
echo $[$num3+$num4]10
也可以做赋值;
$sum=$[$num3+$num4]echo "$sum"10
3.使用两个小括号和[]用法相似
$sum=$(($num3+$num4))echo "$sum"
4.使用expr命令进行运算;将变量和运算符做参数传递给expr做运算;
$sum=$(expr $num3 + $num4)
注意这里既然是作为命令的参数运算的那个参数之间需要空格;
bash的运算符有+,-,,/,*(次方),%(取模)
乘法符号在bash里面有特殊含义,所以在有些场景里面需要使用转义符
文件查找
在文件系统上查找符合条件的文件可使用的命令有:locate,find
locate
文件查找命令,其工作原理是依赖于事先构建好的索引库.系统性的历遍文件系统的所有文件路径下的文件来构建这个库,用户在查找文件的时候不是直接去历遍目标路径而是直接来搜索这个索引库;以节省系统资源;但是我们手动去更新索引库的时候会消耗大量资源;
他的工作特性是:查找熟读快,模糊查找,非实时查找;
手动更新索引库updatedb
locate:查找文件系统上符合条件的文件 locate [OPTION]... PATTERN... -b:至匹配路径中的基名 -c:统计出共多少个符合条件的文件 -r:基本使用正则表达式
find命令
实时查找工具,通过遍历指定的起始目录下文件系统层级结构完成文件查找;与前面locate不同的是find是属于实时查找,可以指定搜索目标的起始路径,默认的是当前目录;find的匹配条件是精确查找,可以根据文件名,大小,类型,从属关系,权限等;而且可以对符合条件的文件作出删除等操作,默认的是输出至标准输出;
新闻热点
疑难解答