shell(3):文本处理、基本语法和脚本编写
一、awk、变量、运算符、if多分支
awk:shell编辑器的一种文本处理工具/命令,同grep、sed一样均可解释正则。具体运用下面awk文本处理有详细说明。
变量:分为系统变量和临时变量。变量一般由字母,下划线_ 开头,其他部分由字母、下划线、数字组成。
运算符
1.算术运算符:加+ 减- 乘* 除/ 取余% 2.关系操作符:大于> 小于< 大于等于>= 小于等于<= 等于== 不等于!= 与&& 或|| 3.赋值运算符:赋值= +=:x=x+1等同于x+=1 *=:x=x*1等同于x*=1 /=:x=x/2等同于x/=2 %=:例如NR%2=1 4.shell计算器:$(()) expr bc -l 5.测试操作
if多分支
if+条件,then+命令。elif+条件,then+命令。elif可以有0个或多个。else +命令。可一有0个或一个。fi 。
二、awk文本处理
1.打印uid在30~40范围内的用户名。
cd /etc/passwd #查看具体的信息数据

awk -F : '$3 >= 30 && $3 <= 40{print $1}' /etc/passwd #$3: 以“:”为分隔符的第三段内容。
因为没有30行所以操作未成功
echo $? #测试命令是否成功

2.打印第5-10行的行号和用户名
awk -F : 'NR>=5&&NR<=10 {print NR,$1}' /etc/passwd #NR代表行号,$1 :以“:”为分隔符的第一段内容。

3.打印奇数行用户名
awk -F : 'NR%2==1 {print NR "----" $1}' /etc/passwd

4.打印偶数行用户名
awk -F : 'NR%2!=1 {print NR,"----", $1}' /etc/passwd

5.打印字段数大于5的行的用户名
awk -F : '$1>=5 {print NR,$1}' /etc/passwd

6.打印UID不等于GID的用户名
awk -F: '$3!=$4 {print NR,$1}' /etc/passwd #UID在第三段,GID在第四段。

7.打印没有指定shell的用户
awk -F: '$7!="/bin/bash" {print NR,$1}' /etc/passwd

三、shell脚本编写
1.自动部署、初始配置、并启动nginx反向代理服务
#!/bin/bash echo '开始安装........'
yum install epel-release -y
yum install nginx -y
echo '更改配置...........'
a="/etc/nginx/nginx.conf "
echo '添加三台代理服务器IP地址.......'
sed -i "17a upstream app {" $a
read -p "输入第一台服务器IP地址: " IP1
sed -i "18a server $IP1;}" $a read -p "输入第二台服务器IP地址: " IP2
sed -i "18a server $IP2;" $a read -p "输入第三台服务器IP地址: " IP3
sed -i "18a server $IP3;" $a c="proxy_pass http://app;"
sed -i "51a $c" $a
echo "配置完成,启动服务............"
systemctl start nginx
后期可以使用for循环来简化流程。





2.自动部署、初始配置、并启动三台web
#!/bin/bash
echo '开始安装........'
yum install epel-release -y
yum install nginx -y
echo '初始化配置.......'
echo '启动服务........'
systemctl start nginx
配置IP地址为上面设置好的。
3.监控脚本:监控每台机器的内存使用率>70%,则输出报警信息
安装软件bc

free #查看内存使用参数,vim b.sh #编辑脚本

#!/bin/bash
while :
do
a=`free |awk 'NR==2{print $3/$2}'`
b=`echo "scale=2;$a/1"|bc|sed "s/\.//"`
echo '当前内存使用率:'$b%
(($b>70)) && echo '内存使用过高!!!!!'
sleep 2
done
shell(3):文本处理、基本语法和脚本编写的更多相关文章
- Shell awk文本处理,shell脚本编写
Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...
- shell 脚本编写基础
在进行Linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入 ./smartzip就能运行脚本了.. 每行 ...
- Linux Shell 高级编程技巧3----运行级别脚本介绍
3.运行级别脚本介绍 3.1.运行级别 运行级别介绍: 0 关机 1 单用户模式 2 多用户模式 ...
- shell脚本编写方法
shell脚本编写就如同一门语言,涉及到运行环境.基本语法.变量定义.函数.参数(系统参数).条件判定.执行流程控制 等等问题. 本文就以下几个方面进行描述: 运行环境: shell shebang ...
- shell脚本编写笔记
包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...
- shell编程之服务脚本编写,文件锁以及信号捕获
shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以 ...
- Linux Shell处理文本最常用的工具大盘点
导读 本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实 ...
- [转] 利用shell创建文本菜单与窗口部件的方法
[From] http://www.jb51.net/article/129460.htm 前言 创建交互式shell脚本最常用的方法是使用菜单.提供各种选项可以帮助脚本用户了解脚本能做什么,不能做什 ...
- Shell中的(),{}几种语法用法-单独总结
shell中的(),{}几种语法用法 查看脚本语法是否有错误: bash -n modify_suffix.sh 跟踪执行 sh -x modify_suffix.sh aaa 1. ${var} 2 ...
随机推荐
- Python Mysql学习总结
任何应用都离不开数据,所以在学习python的时候,当然也要学习一个如何用python操作数据库了.MySQLdb就是python对mysql数据库操作的模块.官方Introduction : MyS ...
- hihoCoder #1157 建造金字塔
这道题我想了一天才想清楚做法.AC 了之后去看别人写的题解,都是三言两语意识流式描述,我并不能读懂.我觉得很自卑,为何人家解这道题如此轻松.不过,我还是决定把我的解法写下来,并且一定要写清楚. 思路 ...
- HDU——1393Weird Clock(水题,注意题意)
Weird Clock Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- [luoguP2770] 航空路线问题(最小费用最大流)
传送门 模型 求最长两条不相交路径,用最大费用最大流解决. 实现 为了限制经过次数,将每个点i拆成xi,yi. 1.从xi向yi连一条容量为1,费用为1的有向边(1<i<N), 2.从x1 ...
- [POJ3974]Palindrome(后缀数组 || manacher)
传送门 求一个串的最长回文子串的长度 1.后缀数组 把这个串反转后接到原串的后面,中间连一个没有出现过的字符. 然后求这个新字符串的某两个后缀的公共前缀的最大值即可. ——代码 #include &l ...
- BZOJ4916 神犇和蒟蒻 【欧拉函数 + 杜教筛】
题目 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; 输入格式 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; 输出格式 请你输出一个整数A=\sum ...
- @login_required用法简介
在django项目中,经常会看到下面这样的代码: from django.contrib.auth.decorators import login_required @login_required d ...
- stein法求gcd 学习笔记
原理显然 由于当x,y都为奇数时进行辗转相见 每次减完必有偶数 而偶数最多除log次 那么也最多减log次 复杂度有保证 注:代码未验证 int gcd(int x,int y){ int res=1 ...
- 区间合并 POJ3667+HDU4553
两道题都是线段树的区间合并 lsum, rsum分别表示左/右端点 开始向右/左 符合条件的元素的最长连续长度 sum表示这个区间的符合条件的元素的最长连续长度 所以pushUp可写: void pu ...
- codeforces 900D 数论+组合+容斥原理
问有多少个这样的数字序列 所有数的GCD等于x 并且 所有数的和等于y 题解: 非常难有思路啊 看题解后过的. 考虑序列GCD为x的倍数 即GCD = n*x 和当然都为y 这个条件不要忘了 这样我们 ...