shell脚本

 

定义:脚本就是一条条命令的堆积。常见脚本有:js asp,jsp,php,python
Shell特点:简单易用高效
Shell分类:图形界面(gui shell) 命令行界面(cli界面)
查看可用的shell类型:
/etc/shells 查看当前shell类型:echo $SHELL



执行脚本的三种方法:

Bash 脚本名称

添加可执行权限

Source 脚本名称

 

二.Shell编程常用命令

 

grep

-i:忽略大小写

-n 打印行号

-o 打印匹配内容

-c 打印匹配的行数

-B 打印匹配的前几行

-A 打印匹配的后几行

-v 打印不匹配的行

 

cut命令(剪切字符至标准输出)

-c 以字符为单位切割

-d 自定义分隔符

-f 与-d一起使用,指定显示哪个区域

 

Sort命令

-k 根据切割后的一段排序

-n 依照数值的大小排序

-r 以相反的顺序排序

-u 去除重复行

 

Uniq命令(去除重复的行)

-c:在行首用数字表示该行出现字数

-u 显示不重复的行

 

Tr命令(转换或删除)

a - z任意小写

A-Z 任意大写

0-9任意数字

 

 

 

变量

 

一.定义:用来存放各种数据,编程语言组成部分

 

变量的命名规则

变量名由数字 字母下划线组成

必须以字母或者下划线开头

不能使用shell里面的关键词

 

2.变量的引用:$变量名 或 ${变量名}

 

3- 已定义的变量可以重新赋值,只读变量不能删除(readonly 变量名)(unset)

 

变量类型

局部变量  环境变量  shell变量(特殊变量)

 

特殊变量

$0  当前脚本的文件名

$n   传递给脚本的参数

$#   传递给脚本的参数个数

$*   传递给脚本或函数的所有参数

$?   上个命令的退出状态,或函数的返回值

 

条件表达式

[ ] 括号的表达式前后都要有空格

 

整数表达式

-eq 等于

-ne 不等于

-gt 大于

-le 小于

-ge 大于或等于

-le 小于或等于

 

字符串比较符(字符串比较时要加双引号

==等于

!= 不等于

-n 字符串不为0为真

-z 字符串为0为真

 

文件测试符

-e 文件或者目录存在为真

-f 文件存在为真

-d 目录存在为真

-r -w -x 有权限为真

 

布尔运算符

! 取反

-a 和关系

-o 或者

 

逻辑判断符

&& 逻辑和,判断是否为真时使用,前者为真执行后面的

|| 如果前面为假,则执行后面的

 

 

练习:

  1. 统计系统中以.sh结尾的文件总大小,输出结果以kb为单位

#!/bin/bash

sum=0

for size in `find /root -name "*.sh" -exec ls -l {} \; | cut -d " " -f 5`

do

        let sum+=$size

done

echo "$((sum/1024))kb"

 

2、统计100以内的偶数和

#!/bin/bash
for i in `seq 2 2 100`
do
        let sum+=$i
done
echo "$sum"

 

3、批量统计主机是否在线

 

 

4、输出目录下文件类型到终端

#!/bin/bash
for i in `ls -l | cut -c 1`
do
        if [ $i == "-" ];then
                echo "文件"
        elif [ $i == "d" ];then
                echo "目录"
        else
                echo "其他类型"
        fi
done

 

5、简单的四则运算

 

6、创建以1-100为开头的文件,输出到终端

#!/bin/bash
for i in {1..100}
do
        touch $i.txt
        echo $i.txt
        sleep 1
done

 

7.持续检测内存剩余量

#!/bin/bash
while true
do
        for i in `free -h | awk -F " +" '{print $4}' | head -2 | grep -v free`
        do
                echo $i
                sleep 1
        done
done

 

8、一键部署nfs服务端

#!/bin/bash
yum -y install nfs-utils rpcbind &>/dev/null
mkdir haha
chmod -R 777 haha/
echo "haha *(rw)" >> /etc/exports
systemctl restart nfs rpcbind

 

一键部署nfs客户端

#!/bin/bash
yum -y install nfs-utils &>/dev/null
systemctl restart nfs
mkdir haha
showmount -t nfs 192.168.253.10:haha haha

 

9、统计root目录下以.sh结尾的文件大小

 

posted on 2019-04-12 15:56  猪肉佬!  阅读(578)  评论(1编辑  收藏  举报