zoukankan      html  css  js  c++  java
  • 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!

    http://blog.csdn.net/xiaominghimi/article/details/7603003

    本站文章均为 李华明Himi 原创,转载务必在明显处注明:
    转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/shell/764.html

              ☞ 点击订阅 ☜
     本博客最新动态!及时将最新博文通知您!

    对于Shell书写和概念上一篇已经有所介绍,那么本篇继续学习Shell编程一些语法知识;

    首先介绍Shell中的流程控制,例如判断语句等等…

    if语句:

    首先了解几个知识:

    [ -f "somefile" ] :判断是否是一个文件

    [ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限

    [ -n "$var" ] :判断$var变量是否有值

    [ "$a" = "$b" ] :判断$a和$b是否相等

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/sh
    varOne=1
    varTwo=2
    varThree=3
    if [ "$varOne" = "$varTwo" ]; then
        echo "varTwo:$varTwo"
    elif [ "$varOne" = "$varThree" ]; then
        echo "varThree:$varThree"
    else
        echo "varOne:$varOne"
    fi

    务必注意,[]比较的时候其括号前后的空格别忘了! = 等号前后也要有空格也要注意;

       && 和 || 操作符:

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/bin/sh
    varOne=1
    varTwo=2
    varThree=3
    if [ "$varOne" = "$varThree" ] || [ "$varOne" = "$varTwo" ]; then
        echo "|| 进入"
    else
        echo "No || 进入"
    fi
     
    if [ "$varOne" = "$varOne" ] && [ "$varOne" = "$varTwo" ]; then
        echo "&& 进入"
    else
        echo "No && 进入"
    fi

     case 语句:

    须知:

    case表达式可以用来匹配一个给定的字符串,而不是数字(可别和C语言里的switch…case混淆)。

        示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/sh
     
    ftype=`file "$1"`   # Note ' and ` is different
    case "$ftype" in
    "$1: Zip archive"*)
    unzip "$1" ;;
    "$1: gzip compressed"*)
    gunzip "$1" ;;
    "$1: bzip2 compressed"*)
    bunzip2 "$1" ;;
    *) echo "File $1 can not be uncompressed with smartzip";;
    esac

    特殊变量$1,该变量包含有传递给该脚本的第一个参数值,也就是说,$1 就是字符串 articles.zip。

         select 语句:

    select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:

    1
    2
    3
    4
    select var in ... ; do
     break;
    done
    .... now $var can be used ....

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    #!/bin/sh
     
    echo "What is your favourite OS?"
    select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
      break;
    done
    echo "You have selected $var"

    如果 以上脚本运行出现 select :NOT FOUND 将 #!/bin/sh 改为 #!/bin/bash 该脚本的运行结果如下:

    1
    2
    3
    4
    5
    6
    7
    What is your favourite OS?
    1) Linux
    2) Gnu Hurd
    3) Free BSD
    4) Other
    #? 1
    You have selected Linux

    while/for 循环:

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/sh
    varOne=1
    varTwo=1
     
    # while
    while [ "$varOne" = "$varOne" ]; do
        echo "while Done"
        break
    done
     
    #  for
    for varStr in H I M I ; do
        echo "varStr is $varStr"
    done

    输出:

    1
    2
    3
    4
    5
    6
    while Done
    varStr is H
    varStr is I
    varStr is M
    varStr is I
    localhost:Desktop Himi$

    select 语句:

    须知:select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:

       示例代码:

    1
    2
    3
    4
    5
    6
    #!/bin/sh
    echo "What is your favourite?"
    select var in "iOS" "Android" "Himi" "Other"; do
    break;
    done
    echo "You have selected $var"

    执行脚本后,等待用户输入,然后在终端输入你的选择,回车,如下显示:

    1
    2
    3
    4
    5
    6
    7
    8
    What is your favourite?
    1) iOS
    2) Android
    3) Himi
    4) Other
    #? 3
    You have selected Himi
    localhost:Desktop Himi$

    函数:

    如果你写过比较复杂的脚本,就会发现可能在几个地方使用了相同的代码,这时如果用上函数,会方便很多。函数的大致样子如下:

    1
    2
    3
    4
    5
    6
    functionname()
    {
    # inside the body $1 is the first argument given to the function
    # $2 the second ...
    body
    }

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    #!/bin/sh
    himi()
    {
        echo "Function is ok"
        exit 0
    }
    himi

    脚本调试:

    最简单的调试方法当然是使用echo命令。你可以在任何怀疑出错的地方用echo打印变量值,这也是大部分shell程序员花费80%的时间用于调试的原因。Shell脚本的好处在于无需重新编译,而插入一个echo命令也不需要多少时间。shell也有一个真正的调试模式,如果脚本”strangescript”出错,可以使用如下命令进行调试:

     sh -x strangescript

    上述命令会执行该脚本,同时显示所有变量的值。shell还有一个不执行脚本只检查语法的模式,命令如下:

    sh -n your_script    

    OK,本章主要是为了熟悉一些控制语句和常用知识点,那么到这对于Shell编程基础学习认识就算告一段落,如有必要以后会继续深入学习;暂时足以;

  • 相关阅读:
    Python核心编程——正则表达式
    Python 随笔之Redis
    我的第一个Python随笔
    python练习题-day20
    python练习题-day19
    python练习题-day18
    python练习题-day16
    python练习题-day15
    python练习题-day14
    python练习题-day13
  • 原文地址:https://www.cnblogs.com/xuejinhui/p/4497490.html
Copyright © 2011-2022 走看看