shell基本语法(一)

作业一:整理博客,内容包含awk、变量、运算符、if多分支

作业二:awk文本处理

1、打印uid在30~40范围内的用户名

[[email protected] ~]# awk -F: ‘$3>=30 && $3<=40{print $1}‘ /etc/passwd
rpc
ntp

2、打印第5-10行的行号和用户名

[[email protected] ~]# awk -F: ‘NR>=5 && NR<=10{print NR,"-------",$1}‘ /etc/passwd
5 ------- lp
6 ------- sync
7 ------- shutdown
8 ------- halt
9 ------- mail
10 ------- operator

3、打印奇数行

[[email protected] ~]# awk ‘(NR%2){print NR,"----",$0}‘ test
1 ---- root:x:0:0:root:/root:/bin/bash
3 ---- nginx:x:991:547:Nginx web server:/var/lib/nginx:/sbin/nologin
5 ---- abominate:x:1010:1011::/home/abominate:/bin/bash
7 ---- atomize:x:1012:1013::/home/atomize:/bin/bash
9 ---- Wpq2222b:x:1014:1015::/home/Wpq2222b:/bin/bash
11 ---- egon666:x:1016:1017::/home/egon666:/bin/bash
[[email protected] ~]#

4、打印偶数行

[[email protected] ~]# awk ‘!(NR%2){print NR,"----",$0}‘ test
2 ---- bin:x:1:1:bin:/bin:/sbin/nologin
4 ---- abominable:x:1009:1010::/home/abominable:/bin/bash
6 ---- anomie:x:1011:1012::/home/anomie:/bin/bash
8 ---- Alex213sb:x:1013:1014::/home/Alex213sb:/bin/bash
10 ---- yH438PIG:x:1015:1016::/home/yH438PIG:/bin/bash
12 ---- egon:x:1017:1002::/home/egon:/bin/bash

5、打印字段数大于5的行

[[email protected] ~]# awk -F: ‘NF>5{print $1,"-----",NF}‘ test
root ----- 7
bin ----- 7
nginx ----- 7
abominable ----- 7
abominate ----- 7
anomie ----- 7
atomize ----- 7
Alex213sb ----- 7
Wpq2222b ----- 7
yH438PIG ----- 7
egon666 ----- 7
egon ----- 7

6、打印UID不等于GID的用户名

[[email protected] ~]# awk -F: ‘$3!=$4{print $3,"----",$4}‘ test
991 ---- 547
1009 ---- 1010
1010 ---- 1011
1011 ---- 1012
1012 ---- 1013
1013 ---- 1014
1014 ---- 1015
1015 ---- 1016
1016 ---- 1017
1017 ---- 1002

7、打印没有指定shell的用户

[[email protected] ~]# awk -F: ‘$NF!~/bash$/{print $0}‘ test
bin:x:1:1:bin:/bin:/sbin/nologin
nginx:x:991:547:Nginx web server:/var/lib/nginx:/sbin/nologin

作业三:shell脚本编写

1、自动部署、初始配置、并启动nginx反向代理服务

#!/bin/sh

ngxStatus=`ps aux | grep -v grep |grep -c nginx`

if [ -e /usr/sbin/nginx ];then
    echo "nginx already installed"
    exit 110
else
    yum install epel-release -y -q
    yum install gcc-* glibc-* openssl openssl-devel pcre pcre-devel zlib zlib-devel -y -q
    yum install nginx -y -q
    echo "install nginx successful"
fi
if [ -f /etc/nginx/nginx.conf ];then
    /bin/cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
    sed -i ‘/^http/a\\t upstream luchuangao { \n\t server web01;\n\t server web02;\n\t server web03;\n\t }‘ /etc/nginx/nginx.conf
    sed -i ‘/^        location \/ {/a\\t\t proxy_pass http:\/\/luchuangao;‘ /etc/nginx/nginx.conf
    echo "Configuration successful"
fi
if [ $ngxStatus -lt 2 ];then
    systemctl start nginx
    echo "Start nginx successful"
fi

2、自动部署、初始配置、并启动三台web

#!/bin/sh

ngxStatus=`ps aux | grep -v grep |grep -c nginx`

if [ -e /usr/sbin/nginx ];then
    echo "nginx already installed"
    exit 110
else
    yum install epel-release -y -q
    yum install gcc-* glibc-* openssl openssl-devel pcre pcre-devel zlib zlib-devel -y -q
    yum install nginx -y -q
    echo "install nginx successful"
fi
if [ -f /etc/nginx/nginx.conf ];then
    /bin/cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
    sed  -i ‘/^        location \/ {/a\\t\t root /data/www/html;\n\t\t index index.html;‘ /etc/nginx/nginx.conf
    mkdir -p /data/www/html
    echo `hostname` > /data/www/html/index.html
    echo "Configuration successful"
fi
if [ $ngxStatus -lt 2 ];then
    systemctl start nginx
    echo "Start nginx successful"
fi

3、监控脚本:监控每台机器的内存使用率>70%,则输出报警信息

#!/bin/sh

mem_use=`free | awk ‘NR==2{print $3}‘`
mem_total=`free | awk ‘NR==2{print $2}‘`
mem_per=`echo "scale=2;$mem_use/$mem_total"|bc -l |cut -d . -f2`

if [ -e /usr/bin/bc ];then
    echo "bc already installed"
else
    yum install bc -y -q
    echo "bc nginx successful"
fi

#if [ $mem_per -gt 70 ];then
if (( $mem_per > 70 )); then
    echo "Warning free has not enough, now free is ${mem_per}%"
else
    echo "Now free is ${mem_per}%"
fi
时间: 2024-10-11 04:06:24

shell基本语法(一)的相关文章

shell 基础语法

shell 基础语法 =============================================== 推荐:http://c.biancheng.net/cpp/shell/ =============================================== 第一个Shell脚本 =============================================== 格式: (1)扩展名为sh(sh代表shell) 比如:bash.sh (2)文件头(文件头固

linux shell awk 语法

引用:http://blog.csdn.net/weekly123/article/details/1465675 inux shell awk 语法   Awk 是一种非常好的语言,同时有一个非常奇怪的名称.在本系列(共三篇文章)的第一篇文章中,Daniel Robbins 将使您迅速掌握 awk 编程技巧.随着本系列的进展,将讨论更高级的主题,最后将演示一个真正的高级 awk 演示程序.捍卫 awk在本系列文章中,我将使您成为精通 awk 的编码人员.我承认,awk 并没有一个非常好听且又非

linux shell基础语法

1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 1.1作为可执行程序 将上面的代码保存为t

shell基本语法备忘

1.第一行要写明shell种类 #!/bin/bash 2.打印输出 #!/bin/bashecho "Hello World !~" 3.变量定义 变量=前后不能有空格,字符串要用“或‘ 或  不用 变量是若定义的,不定义也可使用,既:值为空 变量可以用 { } 括起来,明确变量名称的范围 #!/bin/bashv_name="LiKun"v_id=1echo $v_name echo ${v_name}_goodecho $v_id echo $null ./t

Shell 基本语法

一. Linux基本命令 1.1.  cp命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,功能十分强大. 语法: cp [选项] 源文件或目录 目标文件或目录 1.2. mv命令 用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中. 语法:mv [选项] 源文件或目录 目标文件或目录 1.3. rm命令 用户可以用rm命令删除不需要的文件或者目录. 语法:rm [选项] 文件 如果没有使用- r选项,则rm不会删除目录. 1.4. mkdir和rmdir 语法

(转)Shell基础语法

本文主要是基础的基础,希望对大家有所帮助 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量,常用的Shell环境变量有: HOME 用于保存注册目录的完全路径名. PATH 用于保存用冒号分隔的目录路径名,Shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行. TERM 终端的类型. UID 当前用户的识别字,取值是由数位构成的字串. PWD

bash shell基础语法

本文主要是基础的基础,希望对大家有所帮助 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量,常用的Shell环境变量有: HOME 用于保存注册目录的完全路径名. PATH 用于保存用冒号分隔的目录路径名,Shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行. TERM 终端的类型. UID 当前用户的识别字,取值是由数位构成的字串. PWD

shell基础语法以及监控进程不存在重新启动

转码 # dos2unix ./test.sh 权限 # chmod a+x ./test.sh 语法变量var="111"echo $varecho ${var} 运算no1=4;no2=5;let result=no1+no2echo $result; 自增自降低let no++  let no-- []和let相似result=$[ no1 + no2 ]result=$[ $no1 + 5 ]也能够使用(()),但使用(())时.变量名前须要加上$result=$(( $no1

shell case语法

在阅读hadoop相关的脚本文件时,遇到case语句,好久不写shell,忘了不少,复习下shell的case语句:                             运行结果:               case的语法:                                 Hadoop中,hadoop-daemon.sh中有如下的case代码:

linux bash shell 基本语法

一 变量的取用与设定(注意等号前后不能有空格) 1. read 读取来自键盘的输入内容赋值给变量,使用方法如下 [email protected]:/opt/android-sdk/sdk/# read var_read this is what i get from my keyboard [email protected]:/opt/android-sdk/sdk/# echo ${var_read} this is what i get from my keyboard 2. declar