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 ...
随机推荐
- Spring配置文件中使用ref local与ref bean的区别
Spring配置文件中使用ref local与ref bean的区别.在ApplicationResources.properties文件中,使用<ref bean>与<ref lo ...
- 设计模式(二 & 三)工厂模式:1-简单工厂模式
模拟场景: 需要构造一个运算器(Operation),分别负责加减乘除的运算功能. 思想: 这里需要构造四个 Operation,可以使用 Factory 去统一创建这四个对象. 所需要构造的对象是运 ...
- 《分布式对象存储》作者手把手教你写 GO 语言单元测试!
第一部分:如何写Go语言单元测试 Go语言内建了单元测试(Unit Test)框架.这是为了从语言层面规范写UT的方式. Go语言的命名规则会将以_test.go结尾的go文件视作单元测试代码. 当我 ...
- [CODEVS1911] 孤岛营救问题(分层图最短路)
传送门 吐槽:神tm网络流... 用持有的钥匙分层,状态压缩,用 2 进制表示持有的钥匙集合. dis[i][j][k] 表示持有的钥匙集合为 k,到达点 (i, j) 的最短路径. 分层图的最短路听 ...
- Eclipse + Apache Axis2 发布RESTful WebService(一)基础知识
1.什么是WebService 学习 WebService 第一步:体系结构.三元素SOAP/WSDL/UDDI 2.什么是Axis2 Axis2是Apache一套崭新的WebService引擎(框架 ...
- Hadoop 3.1.0 在 Ubuntu 16.04 上安装时遇到的问题
1.Hadoop 安装 pdsh localhost: Connection refused Hadoop安装过程中使用 $ sbin/start-dfs.sh 启动节点时,发生错误提示: pdsh@ ...
- 剑指Offer 二进制中一的个数
链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8 来源:牛客网 public class So ...
- 【CF1023B】Pair of Toys(解方程)
题意:给定n个玩具要你选出两个玩具求出k的价值,第i个玩具的价值为i.若是没有选择方案,输出0 补充:玩具A与玩具B 和 玩具B和玩具A 是同一种选择 n,k<=1e14 思路:列出式子,解不等 ...
- 学习在requirejs下如何使用underscore.js模板
近期在学习underscore.js 这个小而美的js库,是前端 MVC 框架backbone依赖库,他的模板方法主要应用场景是ajax交互过程到页面需要大量的字符串拼接,这部分如果一旦不够仔细就很容 ...
- Office文件上传自动生成缩略图-C#开发
原文: http://www.knowsky.com/898407.html 上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给 ...