zoukankan      html  css  js  c++  java
  • shell的控制流程语句

    shell分为两大类:

    Bourne shell (包括 sh, ksh, bash):Bourne shell ( sh),Korn shell ( ksh),Bourne Again shell ( bash),POSIX shell ( sh)。

    C shell (包括 csh and tcsh):C shell ( csh),TENEX/TOPS C shell ( tcsh)。

    shell调试:常用echo打印变量值;真实的调试模式-sh -x shellscript.sh,执行脚本并打印所有变量的值;只检查语法的调试模式-sh -n script.sh,返回语法错误。

    流程控制语法如下:

    #if语句
    if...;then
    ...
    elif..;then
    ...
    else
    ...
    fi
    #case语句
    case...in
    ..) something;;
    esac
    #select语句,与用户进行交互
    select var in...;do
    ...
    ...$var can be used...
    done
    ...$var can be used...
    #while循环
    while [ 条件1 ]
    do
    ...
    done
    #until
    until [ 条件 ]
    do
    done
    #for循环
    for (( 条件1; 条件2; 条件3 ))
    do
    done
    for var in...
    do
    ...
    done


    注意的是:select是bash的一个扩展应用,所以头语句应该为“#!/bin/bash”,否则select无法使用。select的效果是列出变量,等待用户选择。

    补:与用户进行交互,除了select,还有read命令,用法“read var”,获得用户的输入并赋值给变量var。

    if/while中的条件判断通常使用“[]”来进行条件测试

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

    [ -x "xx" ]:判断是否可执行

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

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

    其他有对文件的测试还有:

    -d目录

    -s文件非空

     
    -f正规文件
    -w可写
    -L符号链接
    -u文件有suid设置
    -r可读
    -x可执行

     对字符串的测试还有: 

    !=两个字符串不相同
    -z空串

    对数值的测试有:
    -eq数值相等(=)  -ne 数值不相等(!=)
    -gt 前者大于后者 (>)  -lt  前者小于后者(<)
    -le 前者小于等于后者 ()-ge前者大于等于后者()
  • 相关阅读:
    HDU 2852 KiKi's K-Number (主席树)
    HDU 2089 不要62
    Light oj 1140 How Many Zeroes?
    Bless You Autocorrect!
    HDU 6201 transaction transaction transaction
    HDU1561 The more ,The better (树形背包Dp)
    CodeForces 607B zuma
    POJ 1651 Mulitiplication Puzzle
    CSUOJ 1952 合并石子
    Uva 1599 Ideal path
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982083.html
Copyright © 2011-2022 走看看