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 ...
随机推荐
- AtCoder Regular Contest 080
手贱去开了abc,这么无聊.直接arc啊 C - 4-adjacent Time limit : 2sec / Memory limit : 256MB Score : 400 points Prob ...
- Set容器——HashSet及常用API
Set容器特点: ① Set容器是一个不包含重复元素的Collection,并且最多包含一个null元素,它和List容器相反,Set容器不能保证其元素的顺序; ② 最常用的两个Set接口的实 ...
- 阿里云 fatal: Authentication failed 退出码 128
阿里云拉取代码时需要输入的用户名密码 跟我们登录aliyun的时候的账号密码不一样,需要先重置一下的,重置之前要配置好邮箱 https://code.aliyun.com/profile/passwo ...
- hdu 5444 构建二叉树,搜索二叉树
Elven Postman Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- 设计模式(二 & 三)工厂模式:3-抽象工厂模式
什么是抽象工厂? 抽象工厂模式,引入了“产品族”的概念. 何为产品族?还是以 设计模式(二)工厂模式:2-工厂方法模式 提到的 Operation 为例. 之前讨论的都是局限于 Operation 这 ...
- BZOJ-1221 软件开发
这题是基于一道经典的费用流模型. 将每天拆成两个点i和j,新增源和汇并建立六种边: 1.从源出发到每个i点,flow为+∞,cost为每条新餐巾的价值,表示这一天所使用的餐巾中来自购买的餐巾 2.从源 ...
- websphere启用高速缓存导致问题
环境:websphere 7 一个流程主页,里面include了上面这个页面,内部有一个iframe: 现象:项目发布在测试环境中,打开流程主页时,里面iframe内页显示不出来: 同样的jsp页面, ...
- Failed to apply plugin [id 'com.gradle.build-scan']
把spring源码clone下来之后,使用gradle编译不通过,异常日志如下: FAILURE: Build failed with an exception. * Where: Build fil ...
- C# 模拟windows文件名称排序(使用windows自带dll)
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)] private static extern int StrCmpLogi ...
- 【CF739B】Alyona and a tree(树上差分,二分,树形DP)
题意:给出一棵有根树,树上每个点.每条边都有一个权值. 现在给出“控制”的定义:对一个点u,设点v在其子树上,且dis(u,v)≤av,则称u控制v. 要求求出每个点控制了多少个点 n (1 ≤ n ...