• 鸟哥的Linux私房菜——第十六章:学习Shell Scripts


      视频链接:http://www.bilibili.com/video/av10565321/

    1. 什么是 Shell Script            (shell写的脚本)
    1.1 干嘛学习 shell scripts?      ()
    1.2 第一支 script 的撰写与执行
    1.3 撰写 shell script 的良好习惯建立  
    2. 简单的 shell script 练习:      (read -p  date)
    3. 善用判断式:
    3.1 利用 test 指令的测试功能
    3.2 利用判断符号 [ ]          
    3.3 Shell script 的预设变数($0, $1...)
    4. 条件判断式:
    4.1 利用 if .... then
    4.2 利用 case ..... esac 判断
    4.3 利用 function 功能
    5. 循环 (loop)
    5.1 while....do....done, until....do....done
    5.2 for...do...done
    6. shell script 的追踪与 debug

     

    第一个shell scripts的撰写,我们写入一个test.sh的文档内

    #!/bin/bash
    PAth=自己echo $PATH一下
    ecport PATH echo
    -e "Hello shuyunquan " exit 0

    然后这样执行  

    bash test.sh

    接下来来一个进阶的scripts吧,我们加入一个read

    test命令 其实就是判断的用途,我列出常用的参数,然后再举个例子

    [] 命令,也是判断用的,有趣的是,test命令的参数[]都能用

    []需要注意的几点

    我们来练习一道例题

    1. 当执行一个程序的时候,这个程序会让使用者选择 Y 或 N ,
    2. 如果使用者输入 Y 或 y 时,就显示『 OK, continue 』
    3. 如果使用者输入 n 或 N 时,就显示『 Oh, interrupt !』
    4. 如果不是 Y/y/N/n 之内的其它字符,就显示『I don't know what is your choise』

    #!/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    export PATH
    read -p "请输入(Y/N):"  yn
    [ "$yn" == "Y" -o "$yn" == "y" ] && echo "ok,continue" && exit 0
    [ "$yn" == "N" -o "$yn" == "n" ] && echo "oh,intsdsd" && exit 0
    echo "我不信这个也能出来" && exit 0

    shell scripts的预设变数($0 $1 $2)

    这个理解起来很简单,脚本名称就是$0   然后第一个参数就是$1 第二个参数就是$2 ...以此类推

    好,我们来个简单的例子

    #!/bin/bash
    
    echo "The scripts name is $0"
    [ -n "$1" ] && echo "第一个参数是: $1" || exit 0
    [ -n "$2" ] && echo "第二个参数是: $2" || exit 0

    if...then 

    if [ ] ; then

      ......

    elif [ ] ; then

      .......

    else

      ........ 

    fi

    exit 0

    #!/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    export PATH
    read -p "请输入(Y/N):"  yn
    if [ "$yn" == "Y" -o "$yn" == "y" ];then
             echo "ok,continue"
    elif [ "$yn" == "N" -o "$yn" == "n" ];then
            echo "oh,intsdsd" 
    else
            echo "我不信这个也能出来" 
    fi
    exit 0       

    case ... in ... esac

    #!/bin/bash
    case $1 in
            "hello")
                    echo "hello,how are you"
                    ;;
            "")
                    echo "你必须输入参数"
                    ;;
            *)
                    echo "要输入hello啊"
                    ;;
    esac

    function 函数  

    #!/bin/bash
    
    
    function h()
    {
       echo "蜀云泉好帅啊 $1"    //function函数也有变量,$1就是函数的参数,这个和脚本的变量不同
    }
    
    case $1 in
            "one")
                    h 1
                    ;;
            "two")
                    h 2
                    ;;
            "three")
                    h 3
                    ;;
            *)
                    echo "只能用123"
                    ;;
    esac

    循环loop

    while do done   注意,while里面的判断式!  符合while条件的才进去循环

    #!/bin/bash
    read -p "请输入一个数字:" number
    i=0
    s=0
    while [ "$i" -lt  "$number" ]    //这里的小于号是 -lt 注意!
    do
    i=$(($i+1))              //这里为什么要两个()?因为()有运算的意思
    s=$(($s+$i))              //这里i和s这两行不能有空格,否则失败
    done
    echo -e "'1+2+...+$number' 的结果是: $s "                             

    大家可以试试echo (1+2)是不会出来3的,而echo ((1+2))才会出来3,所以()有一个整体运算的意思

    untile do done  条件不符合的才进去

    for...do...done 下面是第一种用法

    #!/bin/bash
    
    s=0
    for((i=1;i<=100;i++))
    do
            s=$(($s+$i))
    done
    
    echo $s

    for的第二种用法  animal会循环依次显现三种内容

    #!/bin/bash
    
    for animal in dog cat elephant
    do
            echo "这次的动物是 $animal"
    done      

    shell script的追踪与debug

    就是你写的脚本有没有问题,bash自带参数就能检查

  • 相关阅读:
    mysql5.6.20安装
    唯一识别Windows机器的最佳方法
    不用Root在安卓手机上运行Kali_Linux
    在Windows 7和10上显示上次登录帐户信息
    优化非活动窗口的颜色
    Windows10中以管理员身份打开命令提示符
    在Windows10中更改”WIN+E“快捷键打开目标
    在任务管理器中显示所有CPU内核性能
    Windows启动控制台登录模式
    Fluent Terminal
  • 原文地址:https://www.cnblogs.com/yunquan/p/6821850.html
Copyright © 2020-2023  润新知