![](https://img-blog.csdnimg.cn/20200615154307282.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
shell
shell编程
尼古拉斯丶六六
好想养个小奶狗
展开
-
41、shell编程—后台进程管理实战
先创建一个process.cfg文件[GROUP_LIST]WEBDBHADOOPYARN[WEB]nginxhttpddocker[DB]mysqlpostgresqloraclekubelet[HADOOP]datanodenamenodejournalnode[YARN]resourcemanagernodemanager[nginx]description="Web Server 1"program_name=tailparameter=-原创 2020-06-29 15:58:27 · 209 阅读 · 0 评论 -
41、shell编程—awk之实战演示
第一步:创建如下的a.txt文件2020-06-23 03:26:19 1 Batches: user allen insert 25601 records into database:product table:detail, insert 17602 records successfully,failed 7999 records2020-06-23 03:26:19 2 Batches: user mike insert 15377 records into database:product .原创 2020-06-23 14:53:37 · 185 阅读 · 0 评论 -
40、shell编程—awk之数组
文章目录1.数组2.实例1.数组用go语言解释,就是可以即当map,还可以当切片2.实例实例1:切片# 创建example.awk 文件,内容如下,现在就是切片BEGIN{ str="allen kangkang michel haha zhangshan" split(str,arr) for(i=1;i<=length(arr);i++) print arr[i]}awk -f example.awk示例二:map# 创建expa原创 2020-06-23 11:22:41 · 212 阅读 · 0 评论 -
39、shell编程—awk之常用选项
文章目录1.常用的选项2.实例2.1.-v的坑1.常用的选项运算符号含义-v参数传递-f指定脚本文件-F指定分隔符号-V查看awk的版本号2.实例2.1.-v的坑字符串中间有空格,一定要带上" "var1="hello"var2="hello world"awk -v var3=$var1 -v var4=$var2 'BEGIN{print var3,var4}'# 打印结果:awk: fatal: cannot open file `B原创 2020-06-23 10:00:52 · 943 阅读 · 0 评论 -
38、shell编程—awk之字符串函数
文章目录1.字符串处理函数2.实例3.注意1.字符串处理函数函数名解释函数返回值length(str)计算字符串的长度整数长度值index(str1,str2)在str1中查找str2中的位置返回值为位置索引tolower()转换为小写转换后的小写字符串toupper()转换为大写转换为大写后的的字符串substr(str,m,n)从str中的m位置截取n位截取之后的字符串split(str,arr,fs)按照fs进行切割字符串,原创 2020-06-22 22:55:31 · 271 阅读 · 0 评论 -
37、shell编程—awk之条件循环语句
文章目录1.条件语句2.循环语句3.综合1.条件语句第一步:创建passwd.awk 文件BEGIN{ FS=":"}{ if ($3<50) { printf "%-20s%-20s%-10d\n","UID<50",$1,$3 }else if($3>50 || $3<100) { printf "%-20s%-20s%-10d\n","50<UID<100",$1,$3 }e原创 2020-06-22 18:31:18 · 521 阅读 · 0 评论 -
36、shell编程—awk之算术表达式的用法
文章目录1.定义变量2.简单实例就是一些简单的加减乘除1.定义变量awk 'BEGIN{var=50;var++;print var}'2.简单实例实例# 使用awk计算/etc/passwd 中空白行的数量awk '/^$/{sum++}END{print sum}' /etc/passwd原创 2020-06-22 15:25:17 · 209 阅读 · 0 评论 -
35、shell编程—awk之模式匹配的用法
文章目录1.RegExp正则匹配2.运算符匹配2.1.关系运算符匹配2.2.布尔运算符匹配1.RegExp正则匹配实战:# 匹配/etc/passwd文件中含有root的字符串的所有行awk 'BEGIN{FS=":"}/root/{print $0}' /etc/passwd# 匹配/etc/passwd文件中^yarn开头的所有行awk 'BEGIN{FS=":"}/^yarn{print $0}' /etc/passwd2.运算符匹配2.1.关系运算符匹配运算符号含义原创 2020-06-22 14:56:02 · 455 阅读 · 0 评论 -
34、shell编程—awk之printf命令
文章目录1.格式说明符号2.实例1.格式说明符号格式符含义%s打印字符串%d打印十进制数%f打印浮点数%x打印十六进制数%o打印八进制数%e打印数字的科学计数法形式%c打印单子字符的ASCII码-左对齐+右对齐2.实例# 1. 已字符串的格式打印/etc/passwd的第7个字段,已“:”作为分隔符号awk 'BEGIN{FS=":"}{printf "第七个字段为:$s\n",$7}' /etc/passw原创 2020-06-22 11:34:35 · 480 阅读 · 0 评论 -
33、shell编程—awk内置变量
文章目录1.内置变量对照表2.变量详解2.1.$02.2.$1-n2.3.NF2.4.NR2.5.FNR2.6.FS2.7.RS2.8.ORS2.9.OFS2.10.FILENME2.11.ARGC1.内置变量对照表内置变量含义$0整行内容1−1-1−n当前行的1-n个字段NF当前行的字段个数,就是有多少列NR当前行的行号,从1开始进行计数FNR多文件处理,每个文件的行号单独计数,都是从0开始的FS输入字段分隔符号,不指定默认已空格和tabl原创 2020-06-18 23:12:58 · 203 阅读 · 0 评论 -
32、shell编程—awk工作模式
文章目录1.语法格式1.语法格式第一种:awk ’ BEGIN{} pattern{command} END{}’ filenme第二种:standard output | awk ’ BEGIN{} pattern{command} END{}’BEGIN{}:在处理文本之前开始执行对应的命令,执行完begin命令之后,才会遍历对应的文本中的数据pattern{command}:pattern对特定行进行处理。pattern不写,就是对每一行进行处理END{}:处理完en原创 2020-06-18 22:12:56 · 385 阅读 · 0 评论 -
32、shell编程—sed之实战-打印输出内容
文章目录1.简介2.创建脚本1.简介创建一个my.conf文件[client]port=3306socket=/var/run/mysqld/mysqld.sock[mysqld_safe]socket=/var/run/mysqld/mysqld.socknice=0[mysqld]# * Basic Settingsuser=mysqlpid-file=/var/run/mysqld/mysqld.pidsocket=/var/run/mysqld/mysqld.sock原创 2020-06-18 17:07:29 · 643 阅读 · 0 评论 -
31、shell编程—sed之删除
# 删除 /etc/passwd中的第15行sed -i '15d' passwd# 删除 /etc/passwd 中第8行到14 行之间所有的内容sed -i '8,14d' passwd# 删除/etc/passed 中不能登录的用户sed -i '/\/sbin\/login/d' passwd# 删除/etc/passwd中已mail开头,已yarm开头行的所有内容sed -i '/^mail/,/^yarm/d' passwd# 删除/etc/passwd 中第一个不能登录用户,到原创 2020-06-18 18:24:25 · 341 阅读 · 0 评论 -
30、shell编程—正则表达式
元字符功 能示 例示例的匹配对象^行首定位符/^love/匹配所有以 love 开头的行$行尾定位符/love$/匹配所有以 love 结尾的行.匹配除换行外的单 个字符/l…e/匹配包含字符 l、后跟两个任意 字符、再跟字母 e 的行*匹配零个或多个前 导字符/*love/匹配在零个或多个空格紧跟着 模式 love 的行[]匹配指定字符组内 任一字符/[Ll]ove/匹配包含 love 和 Love 的行[^]匹配不在指...原创 2020-06-18 17:44:17 · 106 阅读 · 0 评论 -
29、shell编程—sed之编辑命令command
文章目录1.常用的编辑命令1.1.查询1.2.删除1.3.增加2.修改3.反向引用3.1.& 和 \1 区别1.常用的编辑命令编辑命令含义p打印d删除a匹配到行后进行追加i匹配到行前进行追加r将后面指定文件的内容追加到指定的行w将匹配到行的内容追加到其它文件1.1.查询sed -n "/^root/p" a.txt1.2.删除sed -i "/^root/d" a.txt1.3.增加# 匹配到行的后面进行追加s原创 2020-06-17 20:38:18 · 329 阅读 · 0 评论 -
28、shell编程—sed之pattern详解
文章目录1.常用的pattern格式2.实战1.常用的pattern格式匹配模式含义10command匹配到第10行不常用10,20command匹配从第10行开始,到20行结束不常用10,+5command匹配从第10行开始,到16行结束不常用/pattern1/command匹配到pattern1行常用/pattern1/,/pattern2/command匹配从pattern1开始到pattern2结束常用10,/patter原创 2020-06-17 18:05:51 · 613 阅读 · 0 评论 -
27、shell编程—sed工作模式以及选项
文章目录1.sed工作模式2.sed语法格式3.sed选项option3.1.option之-n3.2.option之-e3.3.option之-f3.4.option之-r3.5.option之-i1.sed工作模式sed:流编辑器,对标准输出或文件进行逐行处理大白话就理解一个文件编辑器,对文件里面的内容,一行一行的处理2.sed语法格式stdout | sed [option] 'pattern command'sed [option] 'pattern command' file3.原创 2020-06-17 16:20:18 · 263 阅读 · 0 评论 -
26、shell编程—grep语法、以及grep转义字符
文章目录1.grep 和 find的区别2.grep用法3.egrep 和 grep区别1.grep 和 find的区别grep时查找文件内容find是查找文件的2.grep用法第一种形式:grep [option] [pattern] [file1,file2...]第二种形式:command | grep [option] [pattern]参数含义-v显示不匹配pattern的行-i搜索时忽略大小写-n显示行号-E支持扩展的正则表达式原创 2020-06-17 14:46:08 · 878 阅读 · 0 评论 -
25、shell编程—locate、whereis和which
文章目录locatewhereiswhichlocatelocate 命令在数据库中进行查找文件,locate默认的是部分匹配创建的文件默认会在第二天记录在/var/lib/mlocate.db 下面,所以创建完文件想立即生效,可以执行updatedb命令实例locate my.cnf/etc/my.cnf/etc/my.cnf.d/etc/my.cnf.d/mysql-clients.cnfwhereis参数含义-b只返回二进制文件-m只返回帮助文原创 2020-06-17 13:38:21 · 146 阅读 · 0 评论 -
24、shell编程—find工具
文章目录1.常用的find命令2.find之后接exec命令1.常用的find命令格式:find [路径] [选项] [操作]参数含义-name按照名字进行查找-iname按照名字进行查找,不分大小写-type按照文件类型进行查找 d:代表文件夹,f:代表文件-size按照文件大小进行查找 -n:小于大小为n的文件,+n:大于大小为n文件-mtime按照天数进行查找-n:n天内修改的文件,+n:n天以外修改的文件-mmin按照分钟进行查找-原创 2020-06-17 10:45:52 · 502 阅读 · 0 评论 -
23、shell编程—函数,函数库
文章目录1. 注意事项2.实战1. 注意事项库文件名的后缀一般是任意的,一般使用.lib结尾库文件一般没有执行权限2.实战第一步:在/lib/sh/创建一个名为base.lib文件,文件内容如下function showdate{ echo `date`}第二步:创建一个脚本文件,开始引入上面的包#!/usr/bin/env bash. /lib/sh/libMYFUNCS_libshowdate# 然后执行脚本文件,打印结果如下:. /lib/sh/原创 2020-06-16 22:51:08 · 120 阅读 · 0 评论 -
22、shell编程—return ,echo 返回值 和局部变量
文章目录1. 函数返回值局部变量1. 函数返回值return : 返回的是函数的状态码echo : 返回的是函数的值实例#!/usr/bin/env bashfunction is_nginx_running() { pid=$$ ps -ef | grep liuwei | grep -v grep | grep -v pid &> /dev/null if [ $? -eq 0 ] then return 200原创 2020-06-16 22:18:42 · 758 阅读 · 0 评论 -
21、shell编程—&&和|| 用法
文章目录1. &&用法2.|| 用法3. && || 用法1. &&用法comand1 && command2如果command1 执行成功,就会执行command22.|| 用法commad1 || command2如果command1 执行不成功,就会执行command23. && || 用法command1 && command2 || command3如果command1 执行原创 2020-06-16 21:15:08 · 192 阅读 · 0 评论 -
20、shell编程—实战:简单的计算器
#!/usr/bin/env bashfunction calcr() { case $2 in +) echo `expr $1 + $3` ;; -) echo `expr $1 - $3` ;; \*) echo `expr $1 \* $3` ;; /) echo `expr $原创 2020-06-16 16:58:23 · 277 阅读 · 0 评论 -
19、shell编程—实战:检测进程
#!/usr/bin/env bash# 打印当前脚本的进程号status=$$# 先过滤grep 在过滤 脚本的进程号ps aux | grep liuwei | grep -v grep | grep -v $statusif [ $? -eq 0 ]then echo "一直在启动"else echo "停止了" nohup ./liuwei &fi...原创 2020-06-16 16:39:04 · 102 阅读 · 0 评论 -
18、shell编程—多行注释
:<<! # 多行注释开始if [ $? -eq 0 ]then echo "一直在启动"else echo "停止了" nohup ./home/jiangliuwei/liuwei &fi! # 多行注释结束原创 2020-06-16 15:49:21 · 126 阅读 · 0 评论 -
17、shell编程—浮点型数字计算
文章目录1.bc简单用法2.实战1.bc简单用法第一种:第一步:输入bc第二步:进行对应的数字计算第二种echo "scale=4;56/9" | bc2.实战#!/usr/bin/env bashread -p "请输入num1:" num1read -p "请输入num2:" num2num3=`echo "scale=4;$num1 / $num2" | bc`echo $num3...原创 2020-06-16 15:05:52 · 147 阅读 · 0 评论 -
16、shell编程—实战:计算输入正整数的和
#!/usr/bin/env bashwhile truedo read -p "请输入对应的数字:" num # 第一步判断是否是整数 sum=0 expr $num + 1 &> /dev/null # echo "获取的结果为:$?" if [ $? -eq 0 ]; then if [ `expr $num \> 0` -eq 1 ]; then for (( VAR = 0; VAR原创 2020-06-16 14:46:04 · 769 阅读 · 0 评论 -
15、shell编程—定义有类型变量
文章目录1.declare typeset2.命令参数表3.实例1.declare typesetdeclare 和 typeset 命令是等价的2.命令参数表参数含义-r将参数设置为只读变量-i将参数设置为整数-a将参数设置为数组-x将变量声明为环境变量3.实例declare -i numnum="haha"echo $numnum=50echo $numdeclare -x num5num5="haha"echo $num原创 2020-06-16 10:59:43 · 120 阅读 · 0 评论 -
14、shell编程—Here Document
文章目录1.基本用法2.实例2.1.shell替换失效3.总结1.基本用法command <<END documentEND# command是shell 命令# <<END 是开始标志# END 是结束标志2.实例cat <<END> Shell教程> http://c.biancheng.net/shell/> 已经进行了三次改版END#Shell教程#http://c.biancheng.net/shell原创 2020-06-16 10:21:39 · 105 阅读 · 0 评论 -
13、shell编程—标准输入,标准输出,错误输出
文章目录1.定义2.重定向的规律3./dev/null文件1.定义标准输入:一般指的是键盘,标志符号为0标准输出:一般指的是屏幕,标志符号为1错误输出,编制符号一般为22.重定向的规律格式解释command < filename把标准输入重定向到filename文件中command > filename把标准输出重定向到filename文件中(覆盖)command >> filename把标准输出重定向到filename文件中(追原创 2020-06-16 10:10:24 · 221 阅读 · 0 评论 -
12、shell编程—变量数组处理
文章目录1.定义数组2.数组长度1.定义数组arr=("a" "ceshi" 4)echo ${#arr[*]}echo ${#arr[1]}nums=(29 100 13)echo ${#nums[*]}注意: 因为是写go语言的,总是不自觉的加上,2.数组长度arr=("a" "ceshi" 4)echo ${arr[*]} # 打印所有的元素echo ${arr[1]} # 打印指定的元素echo ${#arr[*]} # 打印字符串的长度echo ${#arr[原创 2020-06-15 16:16:53 · 104 阅读 · 0 评论 -
11、shell编程—实战:练习字符串
#!/usr/bin/env bashvar1="Bigdata process framework is Hadoop,Hadoop is an open source project"function PrintTips() { echo var1 echo "---------------------------------------------------------" echo "1.打印字符串长度" echo "2.删除字符串中所有的Hadoop" echo "3..原创 2020-06-12 11:01:13 · 144 阅读 · 0 评论 -
10、shell编程—变量字符串处理
文章目录1.计算字符串长度2.抽取字符串中子串1.计算字符串长度${#string}expr length $string实例第一种:var1="hello world"var2=${#var1}echo $var2 结果:11第二种:var3=`expr length "$var1"`echo $var3 结果:11错误实例注意符号: var3=expr length $var12.抽取字符串中子串${string:position}--------------原创 2020-06-11 23:16:21 · 174 阅读 · 0 评论 -
9、shell编程—变量替换,变量测试和命令替换
文章目录1.变量替换1.1.从头开始匹配1.2.从结尾匹配1.3.变量替换2.变量测试1.变量替换1.1.从头开始匹配${变量#匹配规则}------------- # 从头开始匹配,最短删除${变量##匹配规则}----------- #从头开始匹配,最长删除注意:匹配规则: *规则实例:var1="I love you,you love me"var2=${var1#原创 2020-06-11 22:11:39 · 244 阅读 · 0 评论 -
8、shell编程—文件测试运算符
文章目录1.文件测试符运算列表2.实例1.文件测试符运算列表2.实例a="/home/jiangliuwei/project/wayne/go.mod"if [ -f $a ]; then echo "xixi"fi原创 2020-06-15 15:16:11 · 104 阅读 · 0 评论 -
7、shell编程—字符串运算符
文章目录1.字符运算符列表2.实例1.字符运算符列表2.实例a="30"if [ $a ]; thenecho "hahah"fi原创 2020-06-15 14:46:55 · 116 阅读 · 0 评论 -
6、shell编程—布尔运算符
文章目录1.布尔运算符列表2.实例1.布尔运算符列表2.实例a=20b=30if [ $a != $b ]then echo "haha"else echo "xixi"fiif [ $a -lt 30 -o $b -gt 20 ]then echo "haha"else echo "xixi"fiif [ $a -lt 30 -a $b -gt 50 ]then echo "haha"else echo "xixi"f原创 2020-06-15 14:40:11 · 161 阅读 · 0 评论 -
5、shell编程—关系运算符
文章目录1.关系运算符列表2.实例简介: 关系运算符只支持数字,不支持字符串,但是支持数字字符串1.关系运算符列表2.实例a="20"b="30"if [ $a -eq $b ]then echo "$a -eq $b : a is equal to b"else echo "$a -eq $b: a is not equal to b"fi...原创 2020-06-15 14:29:43 · 173 阅读 · 0 评论 -
4、shell编程—算术运算符
文章目录1.常用的算术方法2.注意一些格式3.实例1.常用的算术方法名称语法范例算术扩展变量=$((算术表达式))r=$((1+2*3))使用外部程序expr变量=expr 算术表达式r=`expr 1 + 2 * 3`使用[ ]变量=$[算术表达式]r=$[1+2]使用declaredeclare -i 变量=算术表达式declare -i r=1+2*3使用letlet算术表达式let r=1+22.注意一些格式expr:例原创 2020-06-15 14:16:06 · 212 阅读 · 0 评论