• shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、功能、select


    1、expr计算整数变量值

    s=`expr 2 + 3`

    运算符号和參数之间要有空格分开;

    2、let命令

    let s=(2+3)*4

    echo $s

    3、for语句

    for 变量 in 列表
    do
    命令行(通经常使用到循环变量)
    done
    #!/bin/bash
    for var in one two three four five
            do
                    echo ------
                    echo '$var is' $var
            done

    以命令返回值作为列表
    #!/bin/bash
    for var in `ls`
            do
                    echo -----
                    echo $var
            done

    4、while语句

    语法格式:
    while      表达式 
    do
    命令行
    done
    #!/bin/bash
    num=1
    while [ $num -le 10 ]
    do
    echo -e "	 the num is $num"
    let num=num+1
    done

    5、until语句

    语法格式:
    unitil      表达式 
        do
    命令行
        done
    #!/bin/bash
    sum=0
    num=10
    until test $num -eq 0
            do
                    sum=`expr $sum + $num`
                    num=`expr $num - 1`
            done
    echo "sum = $sum"

    6、shift语句
    shift语句:将变量的值依次向左传递,并形成一组新的參数值
    例:位置变量当前值为:1=file1 2= file2 3=file3
            运行一次shift后为:1=file2 2=file3
    还能够在shift命令中指定位置变量转移的次数
    shift n
    #!/bin/bash
    while [ -n "$*" ]
            do
                    echo $1 $2 $3 $4 $5 $6
                    shift
            done

    7、if语句

    if 语句的一般形式 :
    if   条件表达式
    then  #当条件为真时运行下面语句
             命令列表
    else #当条件为假时运行下面语句
             命令列表
    fi
    #!/bin/bash
    if test -f "$1"
            then
            echo "$1 is an ordinary file"
    else
            echo "$1 is not an ordinary file"
    fi

    8、case语句

       取值后面必须为单词in,每个模式必须以右括号结束。

    取值能够为变量或常数。

    取值检測匹配的每个模式,一旦模式匹配。其间全部命令開始运行直至;;。运行完匹配模式对应命令后不再继续其它模式。假设无一匹配模式,使用*号捕获该值,再接受其它输入。

     
    [注]
    1.模式字符串中能够使用通配符
    2.假设一个模式字符串中包括多个模式,那么各模式之间应以竖线(|)隔开,表各模式是“或”的关系,即仅仅要给定字符串与当中一个模式相配,就会运行其后的命令列表。

    3.各模式字符串应是唯一的,不应反复出现,而且要合理安排它们的出现顺序,比如。不应将“*”作为头一个模式字符串,由于“*”能够与不论什么字符串匹配。若第一个出现,就不会再检查其它模式了。

    4.case语句以keywordcase开头,以keywordesac结束。
    5.case的退出(返回)值是整个结构中最后运行的命令的退出值。

    若没有运行不论什么命令。则退出值为0.

    #!/bin/bash
    case $1 in
    1)
            echo " you choice is 1";;
    2)
            echo " your choice is 2";;
    *)
            echo " your choice is others";;
    esac

    9、break与continue

    1、break:用于马上终止当前循环的运行。break命令能够使用户从循环体中退出来。
    语法:break[n] ,当中。n表示要跳出几层循环,默认值为1
    2、continue:跳过循环体中在其之后的语句,会返回到本循环层的开头,进行下一次循环。

    语法:continue[n]。当中,n表示从包括continue语句的最内层循环体向外跳到第几层循环。默认值为1,循环层数是由内向外编号。

    10、函数

      函数:由函数标题和函数体两部分组成。

    标题是函数名。

    函数体是函数内在的命令集合。标题名称必须唯一。变量均为全局变量,没有局部变量。

    #!/bin/bash
    num=1
    hello()
    {
            echo "hello boy~ It's our $num meeting"
            let num=num+1
    }

    11、select语句

    格式:

    select 变量 in 列表
    do
    命令行(通经常使用到循环变量)
    done

     

        制作一个选择表,在列表中选择一个选项运行命令行。假设选择的变量不在列表序列中,则返回一个空值。

    须要用break退出循环。

    #!/bin/bash
    echo "a is 5 ,b is 3. Please select your method: "
    a=5
    b=3
    select var in "a+b" "a-b" "a*b" "a/b"
    do
            break
    done
    case $var in
    "a+b")
            echo 'a+b= '`expr $a + $b`;;
    "a-b")
            echo 'a-b= '`expr $a - $b`;;
    "a*b")
            echo 'a*b= '`expr $a * $b`;;
    "a/b")
            echo 'a/b= '`expr $a / $b`;;
    *)
            echo "input error"
    esac



    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    nginx php-fpm 输出php错误日志
    图解phpstorm常用快捷键
    Mysq性能分析 —— Genral log(普通日志)与 Slow log(慢速日式)
    Mac Terminal
    Git安装与配置
    Linux ulimit
    tcpdump
    Linux 基础
    TCP
    HTTP
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4627350.html
Copyright © 2020-2023  润新知