zoukankan      html  css  js  c++  java
  • shell脚本(一)

                                                               

                        

                             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结尾的文件大小

  • 相关阅读:
    Golang Web入门(3):如何优雅的设计中间件
    Golang Web入门(2):如何实现一个高性能的路由
    基于MySQL 的 SQL 优化总结
    Redis系列(七)Redis面试题
    Redis系列(六)Redis 的缓存穿透、缓存击穿和缓存雪崩
    Redis系列(五)发布订阅模式、主从复制和哨兵模式
    Redis系列(四)Redis配置文件和持久化
    Redis系列(三)Redis的事务和Spring Boot整合
    Redis系列(二)Redis的8种数据类型
    Redis系列(一)Redis入门
  • 原文地址:https://www.cnblogs.com/zzzynx/p/10696586.html
Copyright © 2011-2022 走看看