Linux--shell编程--控制结构

具有一般高级程序设计语言所具有的条件控制结构,循环控制结构和函数定义与调用功能

条件控制结构:if,case

循环控制结构:for,while,until

  • 条件测试
    • test命令:用于评估表达式以便进行条件控制
      • 两种格式:test 表达式     或者     [ 表达式 ]
      • 如果表达式的值为“真”,其退出状态为0(即成功),否则退出状态为非零值(失败)
      • 方括号左右两个各需要至少一个空格
      • test "3" \> "2";echo $?
        # result
        0
      • [ "2" \> "3" ];echo $?
        # result
        1

         

      • test命令可以和多种系统运算符一起使用,这些运算符可以分成4类:文件属性测试运算符,字符串测试运算符,数值测试运算符,逻辑运算符
      • 详细教程:链接
    • let命令:为了解决test命令只能执行算术比较运算且书写繁琐
      • 命令格式:let 算术表达式    或    ((算术表达式))
      • 这里的算术表达式使用C语言中的表达式的语法、优先级和结合性
      • 可以执行C语言中常见的算术、逻辑、和位操作。除了"++","--",",",所有整型运算符都得到支持,还有幂方"**"
      • 如果算术表达式求值为0,则设置退出状态为1;如果求值为非零值,则退出状态为0
      • 算术运算的操作数只能是整数(按长整数进行求值)
      • $((算术表达式))可以返回算术表达式的确切值,而不是let命令的退出码
    • "[[ ]]"测试
      • 同(())一样,"[[ ]]"可以对文件名和字符串使用更自然的语法,特殊字符不用转义,"[[ ]]"中,允许用括号和逻辑操作符"&&" 和 "||"把test命令支持的测试组合起来
    • if语句
      • 格式:
        if 测试条件1
        then
            命令组1
        [elif 测试条件2
        then
            命令组2]
        [else
            命令n]
        fi
        if 测试条件1; then
            命令组1
        [elif 测试条件2; then
            命令组2]
        [else 
            命令组n]
        fi

          

      • if语句唯一可测试就是命令退出状态

    • case语句:多重条件选择
      • 格式:
      • case 字符串 in 
        模式字符串1)    命令
                       ...
                       命令;;#表示break
        ...
        esac

         

      • #! /bin/bash
        # case_pattern.sh
        case $1 in
        -f)    echo "find first.sh"
               find ~ -name "first.sh";;
        -l)    echo "ls first.sh"
               ls -l first.sh;;
        *)     echo 'quit';;
        esac
        
        
        # execute
        source case_pattern.sh -f
        
        # result
        find first.sh
        /home/hwq/sh/first.sh
        case的退出状态是整个结构中最后执行的那个命令的退出状态,若没有执行任何命令,则退出状态为0 

 

你可能感兴趣的:(C-Linux环境编程)