shell脚本基本命令

  1. #退出shell脚本
    exit
    #定义一个变量并为其赋值
    #变量无需首先声明类型,"="号两边不能有空格
    #对一个已有值的变量赋值,新值取代旧值
    demo="hello world"
    #在使用该变量的时候需要加$号使用
    echo $demo
    #shell脚本执行
    (1).先对shell脚本添加执行权限
    (2).通过./XXX.sh或者 sh XXX.sh执行脚本(XXX为脚本名)
    #bash和sh的区别
    sh是bash的子集,具体区别可以参考:
    http://www.cnblogs.com/hopeworld/archive/2011/03/29/1998488.html
    #数组操作
    一对括号表示是数组,数组元素使用“ ”符号分开
    a=(1 2 3 4 5)
    #获取数组长度,格式:${#数组名[@ OR *]}
    echo ${#a[@]}
    echo ${#a[*]}
    #输出指定下标的值,下标从0开始,格式:${数组名[下标]}
    echo ${a[2]}
    #输出整个数组的内容,格式:${数组名[@ OR *]}
    echo ${a[@]}
    echo ${a[*]}
    #清楚数组中的对应元素,格式:unset 数组名[下标]
    unset a[1]
    #清楚整个数组中的元素,格式:unset 数组名
    unset a
    #截取数组,格式:${数组名[@ OR *]:起始位置:长度}
    ${a[@]:0:3}
    ${a[*]:0:3}
    #替换数组中的指定内容,格式:${数组名[@ OR *]/查找字符串/替换字符串}
    ${a[*]/2/50}
    #将字符串拆分为数组,利用IFS进行分割
    #X代表使用的分割符,使用时先将初始状态保存,使用完毕后还原
    IFS=“ X”
    
    #if语句,格式
    #...........................................
    if ....
    then
        .....
    elif ...
    then
        ....
    else
        ....
    fi
    #注意条件测试部分中的空格。方括号两侧都有空格,在-f、-lt、=等符号两侧同样有空格
     [ -f "$file" ] : 判断$file是否是一个文件
     [ -x "$file" ] : 判断$file是否存在且有可执行权限, -r 测试文件可读性
     [ -n "$a" ] : 判断变量$a是否有值
     [ -z "$a" ] : 判断变量$a是否为空字符串
     [ $a -lt 3 ] : 判断$a的值是否小于3,-gt和-le分别表示大于或小于等于
     [ "$a" = "$b" ] : 判断$a和$b的取值是否相等
     [ cond1 -a cond2 ] : 判断cond1和cond2是否同时成立(相当于&&),-o表示有一成立(相当于||) 
    #...........................................
    eg.
    if [ $# -lt 3 ]
    then    
        echo $*;
    else
        echo $0;
        echo "参数过多不在控制台显示";
    fi  
    
    #while循环,格式
    while [ cond1 ] && { | } [ cond2 ] ...
    do
        ...
    done
    eg.
    i=10;
    while [[ $i -gt 5 ]]
    do    
        echo $i;
        ((i--));
    done
    
    #for循环,格式
    for var in ...
    do
        ...
    done
    for (( cond1; cond2; cond3 ))
    do
        ...
    done
    eg.
    for i in $(seq 10)
    do
        echo $i;
    done
    for((i=1;i<=10;i++))
    do
        echo $i;
    done
    
    #until循环,格式
    until [ cond1 ] && { || } [ cond2 ] …
     do
        …
    done
    eg.
    a=10;
    until [[ $a -lt 0 ]]
    do
        echo $a;
        ((a--));
    done
    
    #case语句,格式
    ;; <<====>>break作用
    case var in
        pattern 1 )
            … ;;
        pattern 2 )
            … ;;
        *)
            … ;;
    esac
    eg.
    case $1 in
        start | begin)
            echo "start something"
          ;;
        stop | end)
            echo "stop something"
          ;;
        *)
            echo "Ignorant"
          ;;
    esac
    
    #select交互语句,格式
    select var in …
    do
        ....
       break;
    done
    eg.
    select ch in "begin" "end" "exit"
    do
        case $ch in
            "begin")
                echo "start something"
              ;;
            "end")
                echo "stop something"
              ;;
            "exit")
                echo "exit"
                  break;
            ;;
            *)
                echo "Ignorant"
              ;;
        esac
    done
    ## 注意这里交互输入要输入1,2,3,而不是beign,end,exit
    
    #function语句,格式
    functionname()
    {
     …
    }
    # 函数名前面多了个function关键字
    function functionname()
    {
        …
    }
    eg.
    ###### 函数定义 ######
    echo "函数定义";
    # 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。
    function hello()
    {
        echo "Hello!";
    }
    function hello_param() 
    {
        echo "Hello $1 !";
    }
    ###### 函数调用 ######
    echo "函数调用";
    hello;
    ###### 参数传递 ######
    echo "函数传参调用";
    hello_param ben;
    ###### 函数文件 ######
    echo "函数文件调用";
    # 调用函数文件,点和demo_call之间有个空格
    . demo_call.sh;
    # 调用函数
    callFunction ben;
    ###### 载入和删除 ######
    echo "载入和删除";
    # 用unset functionname 取消载入
    # unset callFunction;
    # 因为已经取消载入,所以会出错
    # callFunction ben;
    ###### 参数读取 ######
    echo "参数读取";
    # 参数读取的方式和终端读取参数的方式一样
    funWithParam()
    {
        echo "The value of the first parameter is $1 !"
        echo "The value of the second parameter is $2 !"
        echo "The value of the tenth parameter is $10 !"
        echo "The value of the tenth parameter is ${10} !"
        echo "The value of the eleventh parameter is ${11} !"
        echo "The amount of the parameters is $# !"
        echo "The string of the parameters is $* !"
    }
    funWithParam 1 2 3 4 5 6 7 8 9 34 73
    ###### 函数return ######
    echo "函数return";
    funWithReturn()
    {
        echo "The function is to get the sum of two numbers..."
        echo -n "Input first number: "
        read aNum
        echo -n "Input another number: "
        read anotherNum
        echo "The two numbers are $aNum and $anotherNum !"
        return $(($aNum+$anotherNum))
    }funWithReturn
    # 函数返回值在调用该函数后通过 $? 来获得
    echo "The sum of two numbers is $? !"
    #函数文件demo_call.sh
    function callFunction()
    {
        echo "callFunction $1 !";
        return 1;
    }
    参考文章:
    http://blog.csdn.net/birdben/article/details/52157271
    
    
    
    
    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值