一、运算符
方法1:
expr 1 + 2 // 空格
expr 1 \ * 2 // 转义字符
赋值:
①a=$(expr 5 \* 2)
②a=`(expr 5 \* 2`
方法2:
$((运算式)) 或 $[运算式]
二、条件判断
1、基本语法:
①: test condition
②: [ condition ] (前后有空格)
2、常用条件判断
①:两个整数之间的比较
-eq 等于
-ne 不等于
-lt 小于
-gt 大于
-le 小于等于
-ge 大于等于
②:按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限
多条件判断
[ condition ] && echo OK || echo NOT OK => 条件成立?a:b
三、流程控制
1、if判断
①单分支:
if [ condition ];then
程序
fi
或
if [ condition ]
then
程序
fi
②多分支:
if[ condition ]
then
程序
elif [ condition ]
程序
else
程序
fi
if [ $a -gt 18 ] && [ $a -lt 35 ];then echo OK; fi
if [ $a -gt 18 -a $a -lt 35 ];then echo OK; fi
2、case语句
case $变量名 in
"值1")
程序
;;
"值2")
程序
;;
*)
如果都不是执行此程序
;;
esac
3、for循环
语法一:
for(( 初始值;循环控制条件;变量变化))
do
程序
done
语法二:
for i in 值1 值2 值3
do
程序
done
{1..100} 从1到100的序列
$*: 把参数看成一个整体
$@: 把参数看成一个序列
4、while循环
while [ 条件判断 ]
do
程序
sum2=$[ $sum2 + $a ] let sum2+=a
$a=[ $a + 1 ] >= let a++
done
四、read读取控制台输入
1、基本语法:
read (选项) (参数)
①选项:
-p 指读取值时的提示符
-t 值读取值时等待时间(秒),如果-t不加一直等
②参数;
变量:指定读取值的变量名
五、函数
1、系统函数
①date 显示系统时间 【Sun Nov 13 15:24:47 CST 2022】
date +%s 显示时间戳 【1668324304】
②basename [string/pathname] [suffix] 删除所有前缀包括最后一个('/')字符,然后将字符显示出来。
可以理解为文件名
③dirname 文件绝对路径
2、自定义函数
[ function ] funname[()]
{
Action;
[return int;]
}
六、常用特殊字符
^ 匹配一行的开头
^a 表示以a开头
$ 匹配一行的结束
bash$ 表示以bash结尾
. 匹配一个任意的字符
r..t r和t之间有两个字符的字母
* 不单独使用,和上一个字符连用,表示匹配上一个字符0次或多次
.*任意字符,^a.*t$ 以a开头t结尾,之间任意
+ 匹配一个字符1-n次
?匹配一个字符0-1次
[] 字符区间
[6,8] 匹配6或8
[0-9] 匹配一个0-9的数字
[0-9]* 匹配任意长度0-9字符串
[a-z] 匹配一个a-z之间字符
[a-z]* 匹配任意长度的字母字符串
[a-c,e-f] 匹配a-c,e-f之间的任意字符串
{} 精确匹配个数
[0-9]{8} 8个数字
\ 转义字符 转义特殊字符 '\$'
七、文本处理工具
1、cut 从文件的每一行剪切字节、字符和字段并输出
cut [选项参数] filename
参数:
-f 列号、提取第几列
-d 分割符、按照指定的分割符进行分割列,默认时制表符
-c 按字符进行分割【n】表示取第几列表示取第几列
2、awk 把文件逐行读入,以空格为默认分隔符进行切片,切开部分处理
awk [选项参数] '/pattern1/{action1} /pattern2/action2...' filename
pattern 表示awk在数据中查找的内容,就是匹配模式
action 在找到匹配内容时所执行的一系列命令
参数:
-F 指定输入文件分隔符
-v 赋值一个定义变量