Bash脚本大小写敏感:变量a与变量A不一样
a="www" 定义变量a
${a} 引用变量a;$为引用符号。
`ls` ``为反引号,反引号内的字符可被执行
定义变量时单引号与双引号的区别-双引号可包含单引号 可在字符串中引用另一字符串或变量
数组的使用:
定义数组:arr=(1 2 3 4 5)
引用数组:${arr[@]}/${arr[*]} -- 引用全部数组内数据
${arr[1]} -- 引用数组内第二个数据 2 ;${arr[-2]} -- 引用数组呢倒数第二个数据 4;${#arr[@]} -- 统计数组的长度
对变量进行操作:(()) 例:((a+b)) 对变量a b进行加法计算
字符串操作:${s#*m} ${s##*m}--贪婪匹配 掐头
${s%o* } ${s%%o*} -- 贪婪匹配 去尾
${s/test/sss} -- 替换
判断的类型:-eq 等于 ;-lt 小于;-gt 大于;-ge 大于等于;-le 小于等于;-ne 不等于;-a 逻辑与;-o 逻辑或
! 逻辑非
逻辑控制-判断:
if 结构: if [ condition ];then ...;else ...;fi 逻辑与&&,逻辑或|| --- 只对逻辑判断前的一条语句负责;如果&&前边的语句执行成功则执行其符号后边的语句,如果前边一条语句执行未成功则执行||后边的语句。
例:if [ 3 -eq 4 ];then echo equal;else echo not equal;fi --- [ 3 -eq 4 ] && echo equal || echo not equal
内置判断:
逻辑控制-循环:
for 循环: for((i=0;i<10;i++));do echo $i;done
例:arr=(1 2 3 4 5 6 7) for((i=0;i<${#arr[@]};i++));do echo ${arr[i]};done
for 遍历循环: for x in ${arr[@]};do echo $x;done
while循环: 条件成立则执行语句块内的语句
例:i=0 while [ $i -lt 3 ];do echo $i;((i++));done
重定向:
< 输入重定向:将后边的内容输入到前边的语句中
> 输出重定向:将前边内容输出到后方文件内 覆盖输出
>> 追加内容到后方
例:将屏幕上输入的文字都重定向至另一文件内
i=0 while [ $i -lt 5 ];do read -p "enter: " x;echo $x >> test;((i++));done
read x键盘读入一个数据
read -p “enter”在读入输入内容之前在屏幕上输出enter文字
退出控制:
break 跳出并中断循环
continue 跳出当前循环并进行下一次循环
三剑客:
grep 匹配 -i 忽略大小写匹配 -o 精准匹配 -v 过滤,匹配其他行 -mn 最多匹配前几行 -n 显示行哈
awk 分隔 是一种语言解析引擎。具备完备的网络编程特性。比如执行命令、网络请求等
-- awk 理论上可以代替grep与sed
语法: awk '{pattern+action} {filename}' -- pattern 表示awk在数据中查询的条件,action是在找到指定内容时执行的一系列命令;
awk -F ' 分隔符号' '{print $范围}' -- 将文件逐行读入,以指定分隔符分隔行内数据,将其分隔为不同部分;不指定分隔符则默认为空格分隔 ;多个分隔符 '分隔符1 | 分隔符2' ;$0表示全范围 $1 代表第一个范围 $2代表第二个范围;{}内是执行的语句块
BEGIN{}{}{}END -- 其内为操作块
数据处理:
NF -- 字段数;RF -- 行记录分隔符; FS -- 字段分隔符(可用来切割字段);NR -- 记录数
awk '/00:00:01/,/00:00:04' /tmp/nginx.log -- 取出这两个数据之间的所有数据
sed 替换 '#正则#结果#g‘
语法: sed 's/str1/str2/g' test.txt -- 将test.txt 文件里的所有str1替换为str2; /起一个分隔的作用;s是一个子命令,意思为替换
sed替换文件是将需要替换的内容放入一个模式空间与原始空间无关,原始文件中的内容并没有被替换;如果想替换原始文件: sed -i 's/str1/str2/g' test.txt;文件备份:sed -i.bak 's/str1/str2/g' test.txt --> test.txt.bak
sed 's/[0-9]\{1,\}/*/g' -- 一旦遇到一个或多个数字将这个数字集合作为一个整体替换成1个*
正则表达式:
.匹配任意一个字符;* 匹配任意内容 [] 内的内容为或匹配
网络请求:curl
例:curl -s http://www.baidu.com/s?wd=mp3 | grep "结果约[0-9,]*"
创建文件/文件夹:
mkdir 创建文件夹
touch 创建文件
chmod +x -r -w +w 修改文件的权限
Linux常见命令:
sort -- 可针对文本文件的内容以行为单位来排序
uniq -- 可检查文本文件中重复出现的行列; -c --count 在每列旁边显示该行重复出现的次数
netstat -- 展示当前机器上的tcp和udp连接 ; -t --tcp 显示TCP传输协议的连线状况;-u --udp 显示UDP传输协议的连线状况; -n --numeric 直接使用IP地址,而不通过域名服务器