zoukankan      html  css  js  c++  java
  • 总结一下脚本进阶实验(感想)

    1.打印国际象棋
    #!/bin/bash
    #**************************************************
    #Author:                  jsying
    #QQ:                      2992679364
    #Date:                    2017-09-16
    #FileName:                cheer.sh
    #Descriptions:            The test script
    #**************************************************
    red(){ echo -ne "33[41m      33[0m"; }
    yellow(){ echo -ne "33[43m      33[0m"; }
    for i in `seq 9`; do
        for k in `seq 3`;do
            for j in `seq 9`; do
                let sum=i+j
                let mod=sum%2
                if [ $mod -eq 1 ]; then
                   red
                else
                   yellow
                fi
            done
            echo
        done
    done

    2. 斐波那契数列又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,
    故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……,
    斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)
    (n≥2)
    利用函数,求n阶斐波那契数列
    #!/bin/bash
    #**************************************************
    #Author:                  jsying
    #QQ:                      2992679364
    #Date:                    2017-09-16
    #FileName:                shulie.sh
    #Descriptions:            The test script
    #**************************************************
    read -p "请输入数列个数:" n
    fib(){
        if [ $1 -eq 0 ] ; then
            ret=0
            echo $ret
        elif [ $1 -eq 1 ]; then
            ret=1
            echo $ret
        elif [ $1 -gt 1 ]; then
            let ret=$(fib $[$1-1])+$(fib $[$1-2])
            echo $ret
        fi
    }
    for i in `seq $n`; do
        fib $i
    done
    #!/bin/bash

    3.编写服务脚本/root/bin/testsrv.sh,完成如下要求
    (1) 脚本可接受参数:start, stop, restart, status
    (2) 如果参数非此四者之一,提示使用格式后报错退出
    (3) 如是start:则创建/var/lock/subsys/SCRIPT_NAME, 并显示“启动成功”
    考虑:如果事先已经启动过一次,该如何处理?
    (4) 如是stop:则删除/var/lock/subsys/SCRIPT_NAME, 并显示“停止完成”
    考虑:如果事先已然停止过了,该如何处理?
    (5) 如是restart,则先stop, 再start
    考虑:如果本来没有start,如何处理?
    (6) 如是status, 则如果/var/lock/subsys/SCRIPT_NAME文件存在,则显示“SCRIPT_NAMEis running…”
    如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示“SCRIPT_NAME is stopped…”
    其中:SCRIPT_NAME为当前脚本名
    #!/bin/bash
    #**************************************************
    #Author:                  jsying
    #QQ:                      2992679364
    #Date:                    2017-09-16
    #FileName:                testsrv.sh
    #Descriptions:            The test script
    #**************************************************
    srvfile="/var/lock/subsys/`basename $0`"
    func_start(){
        if [ -e $srvfile ];then
            echo "服务已启动,无需再次启动"
        else
            touch $srvfile
            echo "启动成功"
        fi
    }
    func_stop(){
        if [ -e $srvfile ];then
            rm -f $srvfile
            echo "停止完成"
        else
            echo "服务未启动,无需停止"
        fi
    }
    func_restart(){
        func_stop
        func_start
    }
    func_status(){
        if [ -e $srvfile ];then
            echo "`basename $0` is running..."
        else
            echo "`basename $0` has stoped..."
        fi
    }
    case $1 in
        "start")
            func_start
            ;;
        "stop")
            func_stop
            ;;
        "restart")
            func_restart
            ;;
        "status")
            func_status
            ;;
        *)
            "输入参数错误, Usage: `basename $0` start|stop|restart|status"
            ;;
    esac
    4.打印九九乘法表
    #!/bin/bash
    #**************************************************
    #Author:                  jsying
    #QQ:                      2992679364
    #Date:                    2017-09-16
    #FileName:                chengfa.sh
    #Descriptions:            The test script
    #**************************************************
    for i in `seq 9`; do
        for j in `seq $i`; do
            let x=i*j
            echo -ne "${i}x${j}=${x} "
        done
        echo
    done
    5.打印等腰三角形
    #!/bin/bash
    #**************************************************
    #Author:                  jsying
    #QQ:                      2992679364
    #Date:                    2017-09-16
    #FileName:                sanjiaoxing.sh
    #Descriptions:            The test script
    #**************************************************
    read -p "请输入等腰三角形行数:" line
    # 判断输入的是否是数字
    expr $line + 1 &>/dev/null
    if [ $? != "0" ];then
        echo 输入错误,退出。
        exit
    fi
    # 循环打印
    for cur_line in `seq $line`;do
        let space=line-cur_line
        let filler=2*cur_line-1
        if [ $space == 0 ]; then
            printf %${filler}s " " |tr " " "*"
            echo
        else
            printf %${space}s " "
            printf %${filler}s " " |tr " " "*"
            printf %${space}s " "
            echo
        fi
    done
    简单介绍一下语法:
    if语法


    单分支
    if  判断条件;then
    条件为真的分支代码
    fi


    双分支
    if  判断条件; then
    条件为真的分支代码
    else
    条件为假的分支代码

    多分支
    if  判断条件 1 ; then
    条件为真的分支代码
    elif  判断条件 2 ; then
    条件为真的分支代码
    elif  判断条件 3 ; then
    条件为真的分支代码
    else
    以上条件都为假的分支代码
    fi

    case语法
    case 用 变量引用 in
    PAT1)
    分支1
    ;;
    PAT2)
    分支2
    ;;
    ...
    *)
    默认分支
    ;;
    esac


    for 语法
    for  变量名 in  列表;do
    循环体
    done


    for 循环的特殊格式:
    for (( 控制变量初始化; 条件判断表达式; 控制变量的修正表达式))
    do
    循环体
    Done

    While 语法
    while CONDITION; do
    循环体
    Done

    特殊用法
    while 循环的特殊用法(遍历文件的每一行):
    while read line; do
    循环体
    done < /PATH/FROM/SOMEFILE
       依次读取/PATH/FROM/SOMEFILE 文件中的每一行,且将
        行赋值给 变量line

    感想:
    1.shell脚本对对于一个运维工程师很重要。
    2.自己在学习shell脚本进阶的一个星期里,看到自己很多的缺点;
       自己的逻辑思维很low,学习脚本对于自己是很吃力的。
    3.自己也通过这一个星期,知道该如何突破自己以前的思维模式。
    4.前方的路还有很长,无论今后怎样,希望自己永远保持一颗乐观,上进的心。
    5.加油,致年轻的自己。

  • 相关阅读:
    java单例设计模式
    java实现直接排序冒泡排序二分查找数组反转
    使用LinkedList模拟洗牌功能
    使用LinkedList实现堆栈和队列数据结构存储方式
    Jdeveloper运行缓慢或启动报错【Unable to create an instance of the Java Virtual Machine】解决方法
    java线程——守护线程
    OAF常用配置文件(Profile)
    pl/sql动态根据cursor插入数据(含'&等特殊字符)
    java多线程介绍(二)
    eclipse 3.6 + tomcat 6.0 开发SSH框架学习
  • 原文地址:https://www.cnblogs.com/jiesying/p/7530007.html
Copyright © 2011-2022 走看看