输入
键盘输入一个值赋值给data变量
read -p "请输入内容:" data
整数运算
方式1:expr
例如:expr 1 + 2
方式2:$(())
例如:echo $((5-3*2))
方式3:$[]
例如:echo $[5+3]
方式4:let
例如:let sum=4+5 , let i++
判断
条件测试
数值比较:[ 整数1 操作符 整数2 ] 注意:[]左右要留一个空格
操作符:-gt:大于,-lt:小于,-eq:等于 ,-ne:不等于,-ge:大于等于,-le 小于等于
文件测试: [ 操作符 文件或目录 ]
操作符:
-f filename:当filename存在返回真
字符串比较:[ "字符串" 操作符 "字符串" ]
操作符=:等于,例如:[ "yes" = "yes" ]
操作符!=:不等于
多条件(and 和 or)
多条件都成立:
[ 1 -lt 2 -a 5 -gt 3 ]
[[ 1 -lt 2 && 5 -gt 3 ]]
[ 1 -lt 2 ] && [ 5 -gt 3 ]
多条件有一个条件成立:
[ 1 -lt 2 -o 5 -gt 10 ]
[[ 1 -lt 2 || 5 -gt 3 ]]
[ 1 -lt 2 ] || [ 5 -gt 3 ]
流程控制
if流程控制
case流程控制
while循环
条件为冒号":"时为死循环
for 循环
数组
数组定义方式1:
arr=(元素1 元素2 元素3)
数组定义方式2:
arr=(`命令`) #命令的返回值作为数组元素,例如arr=(`ls /home`)
数组定义方式3:逐一定义
arr[0]=元素1
arr[1]=元素2
arr[2]=元素3
数组访问方式:
${数组名[下标]},下标为*或@符号指访问所有元素,单个范围下标从0开始
${arr[*]:1} 从下标为1的数据开始获取
${arr[*]:1:3} 从下标为1的数据开始获取到下标为3的元素结束
sed命令
逐行处理
删除
sed -r '/root/d' filename #删除文件中带root的
sed -ri '/root/d' filename #加-i参数,删除后更新到文件
sed -r '3d' filename #删除第3行
sed-r '3,10d' filename #删除第3到10行
sed -r '$d' filename #删除最后一行
内容替换s
sed -r 's/源内容/目标内容/' filename
sed -r 's/root/aaa/' filename #替换匹配到的第一个root为aaa
sed -r 's/^root/aaa/' filename #替换在行首的root为aaa
sed -r 's/root/aaa/g' filename #替换匹配到的所有root为aaa,g指全局
sed -r 's#/aaa/ccc#/bbb/ddd#' filename #也可以用#作为分隔符,/aaa/ccc替换为/bbb/ddd
读取文件r
sed -r 'r 1.txt' filename #把1.txt内容添加到filename下的每一行
sed -r '$r 1.txt' filename #把1.txt内容添加到filename下的最后一行
sed -r '/root/r 1.txt' filename #把1.txt内容添加到filename中带root的下的每一行
另存文件w
sed -r 'w 2.txt' filename #filename另存为2.txt
sed -r '/root/w 2.txt' filename #带root的行另存为2.txt
sed -r '1,5w 2.txt' filename #1-5行另存为2.txt
追加内容a
sed -r 'a bbb' filename #在每一行后面追加 aaa
sed -r '/root/a bbb' filename #在内包含root的每一行后面追加aaa
插入命令 i
sed -r '1i aaa' filename #在第一行后面插入aaa
整行替换c
sed -r '2c aaa' filename #第二行整行替换为aaa
多重指令用分号分隔
sed -r '操作1;操作2;操作3' filename
awk命令
逐行数据处理
awk -F: '{print $0}' 2.txt #-F后面设置的是分隔符,默认是空格 print打印 $0整行,$1第一列
#BEGIN在awk开始执行前执行,END在awk执行结束之后执行
awk -F: 'BEGIN{print "awk start"}{print $0}END{print "awk end"}' 2.txt