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

  • 相关阅读:
    LeetCode "Palindrome Partition II"
    LeetCode "Longest Substring Without Repeating Characters"
    LeetCode "Wildcard Matching"
    LeetCode "Best Time to Buy and Sell Stock II"
    LeetCodeEPI "Best Time to Buy and Sell Stock"
    LeetCode "Substring with Concatenation of All Words"
    LeetCode "Word Break II"
    LeetCode "Word Break"
    Some thoughts..
    LeetCode "Longest Valid Parentheses"
  • 原文地址:https://www.cnblogs.com/zzzynx/p/10696586.html
Copyright © 2011-2022 走看看