• 大数据之Shell编程(二) Shell的基本语法


    1.运算符

    • 格式: expr m + n 或 $((m+n)) 注意:运算符之间需要含有空格,否则报错
    # 计算(2+3)*4的值
    # 方式一:分步计算
    >>> S=`expr 2 + 3`
    >>> expr $S * 4
    
    # 方式二:一步完成计算
    >>> expr `expr 2 + 3` * 4
    # 或者
    >>> $(((2+3)*4))
    

    2.for循环

    • 方式一
    for N in 1 2 3
    do
        echo $N
    done
    或
    for N in 1 2 3;do echo $N;done
    或
    for N in {1..3};do echo $N;done
    
    • 方式二
    for((i=0;i<=5;i++))
    do
      echo "welcome $i times"
    done
    

    3.while循环

    while expression
    do
    command
    done
    

    例如:

    #!/bin/bash
    while [ 2 -gt 1 ]
    do
      echo aa
    done
    
    i=1
    while ((i<=3))
    do 
        echo $i
        let i++
    done
    

    4.case语句

    case $i in
    start)
        echo "starting"
        ;;
    stop)
        echo "stoping"
        ;;
    *)
        echo "Usage:{start|stop}"
    esac
    

    5.read命令,等待用户输入

    • read -p (提示语) -n (字符个数) -t (等待时间)
    >>> read -p "please input your name:" NAME
    >>> echo $NAME
    

    6.if判断

    # 语法
    if condition
    then
        statements
    [elif condition
    then
         statements...]
    [else
        statements...]
    fi
    

    例如:

    #!/bin/bash
    read -p "please input your name:" NAME
    if [ $NAME = root ]
    then
            echo "hello ${NAME},welcome!"
    elif [ $NAME = su ]
    then
            echo "hello ${NAME},welcome!"
    else
            echo "SB,get out here!"
    fi
    

    7.判断语句

    • [ condition ] 注意:condition前后一定要有空格
      非空返回true,可以使用$?来验证(0 为true >=1 为false)
    >>> [ hello ]
    >>> echo $?
    >>> 0
    >>> [  ]
    >>> echo $?
    >>> 1
    
    • [ condition ] && echo OK || echo NotOk 表示满足条件输出OK 否则返回 NotOk

    常用的判断条件
    = 字符串比较
    -lt 小于
    -le 小于等于
    -eq 等于
    -gt 大于
    -ge 大于等于
    -ne 不等于
    判断文件的:
    -r 是否有读的权限
    -w 是否有写的权限
    -x 是否可执行权限
    -f 文件是否存在并且是一个常规的文件
    -s 文件存在且不为空
    -d 文件存在并且是一个目录
    -b 文件存在并且是一块设备
    -L 文件存在并且是一个链接

    >>> [ -f iftest.txt ]
    >>> echo $?
    >>> 0
    

    8.自定义函数

    #语法
    [function] funcname [()]
    {
        action;
        [reurn int;]
    }
    
    # 例如:  function start()  /  start()  / function start   
    # 并且返回值只能为int   0~255
    # 方法参数可以使用$1 $2...
    
    #!/bin/bash
    
    fSum 3 2;
    function fSum()
    {
            echo $1,$2;
            return $(($1+$2));
    }
    total=$?;
    echo "第一次获取的结果:" $total
    
    fSum 5 7;
    total=$?;
    echo "第二次获取的结果:" $total
    

    注意:1 必须在调用之前定义函数,shell是逐行执行
    2.函数的返回值只能通过$?来获取,函数可以显示的添加return返回,如果不添加将以最后一条命令运行结果,作为返回值。return的值必须为int 范围为0~255

    9.脚本调试

    • sh -xv helloworld.sh
    • 或者在脚本中增加set -x
  • 相关阅读:
    .linearDrag on rigidbody / rigidbody2D in code?
    Unity5权威讲解+项目源码+MP4
    C#的扩展方法解说
    use crunch compression
    IIS服务命令
    使用批处理打开控制面板中的功能
    一次性在一个文件夹里建立多个文件夹
    bat 批处理切换到当前脚本所在文件夹
    %date~0,4%和 %time~0,2%等用法详解(转)
    DOS批处理高级教程(还不错)(转)
  • 原文地址:https://www.cnblogs.com/wuqinghua-blog/p/10493300.html
Copyright © 2020-2023  润新知