zoukankan      html  css  js  c++  java
  • shell脚本总结

    前言

    总结了工作中遇到的一些shell使用情况,不定期更新,留作后续参考。

    总结

    1. shell函数以及传参
    #/bin/bash
    # 函数形式
    add(){
        # 参数 1
        para1=$1
        # 参数 2
        para2=$2
        # 参数处理
        sum=`echo "$para1 $para2"|awk '{printf("%d",$1+$2)}'`
        echo $sum
        # 返回,注意,只能是整数0~255
        return 0
    }
    # 调用函数 add
    add 1 2
    # 打印执行结果(即为return 的返回值)
    echo $?
    # 想要得到函数处理结果,尤其是需要获取字符串时,可以使用此方式
    a=$(add 1 2)
    echo $a
    

    return:“假的”返回; echo:“真的”返回

    1. 数组
    array=(1 2 3 "a" b c)
    for i in ${array[*]}
    do
        echo $i
    done
    
    1. case
    input=1
    case $input in
        1)
        echo "one"
        ;;
        2)
        echo "two"
        ;;
        3|4|5|6)
        echo "$input"
        ;;
        *)
        echo "not find"
        ;;
    esac
    
    1. if
    # [[]]中间的条件需要和左右括号各间隔一个空格
    if [[ 条件1 ]]; then
    elif [[ 条件2 ]]; then
    else
    fi
    
    1. 调用linux指令,并捕获返回值
    a=`ls`
    a=`cat 1.txt`
    a=$(ls)
    
    1. 字符串处理
    a="1/2/3.txt"
    # 删除掉最后一个 / 及 / 左边的字符串,得到 3.txt
    b=${a##*/}
    # 删除最后一个 / 及 / 右边的字符串,得到 1/2
    c=${a%/*}
    # 删除最后一个 . 及 . 右边的字符串,得到 3
    d=${b%.*}
    # 从第4位开始截取a, 得到/3.txt
    echo ${a:3}
    # 获取字符串a的长度
    echo ${#a}
    # 大写转小写
    tst="THIS IS A TEST"
    tst2=`echo "$tst" | awk '{print tolower($0)}'`
    # 小写转大写
    tst3=`echo "$tst2"| awk '{print toupper($0)}'`
    

    参考博客https://www.cnblogs.com/yutingliuyl/p/7236501.html

    1. 询问
    a=1
    if [[ a==1 ]]; then
        echo -e "
    "
        # 打印红色提示
        printf  "33[0;31mWarning: a=$a33[0m";
        echo -e "
    "
        # 询问是否继续
        read -r -p "Are you sure to be continue? [Y/n] " input
        case $input in
            [yY][eE][sS]|[yY])
            echo "ok, let's continue"
            echo "-----------------------------------------"
            ;;
            [nN][oO]|[nN])
            exit 0
            ;;
            *)
            echo "Invalid input..."
            exit 1
            ;;
        esac
    fi
    
    1. 运算符
    -e file/dir 判断文件或文件夹是否存在,如果是,返回true
    $a -eq $b 判断a是否等于b,等于则返回true
    $a -ne $b 判断a是否不等于b,等于则返回false
    $a -gt $b 判断a是否大于b,如果是,返回true
    $a -lt $b 判断a是否小于b,如果是,返回false
    $a -ge $b 判断a是否大于等于b,如果是,返回true
    $a -le $b 判断a是否小于等于b,如果是,返回true
    
    1. 多行注释
    :<<EOF
    这是注释
    EOF
    

    多行注释还有其它形式,具体可以参考菜鸟教程

    1. 传递参数
    $# 传递到脚本的参数个数
    $* 以一个单字符串显示所有向脚本传递的参数。如"$*"用__"__括起来,以"$1 $2 ... $n"的形式输出所有参数
    $$ 脚本运行的当前ID号
    $! 后台运行的最后一个进程的ID号
    #@ 与__$*__相同,但是使用时加引号,并在引号中返回每个参数。如"#@"用__""__括起来,以"$1" "$2" ... "$n" 的形式输出所有参数
    $- 显示Shell使用的当前选项,与__set__命令功能相同
    $? 显示最后命令的退出状态。0表示没有错误,其它任何值表示有错误。
    

    8,9,10参考菜鸟教程https://www.runoob.com/linux/linux-shell.html

  • 相关阅读:
    BigDecimal保留几位小数方法及其八种舍入模式
    JAVA 将浮点类型的字符串转换成整数类型 (出现转换异常)
    登录linux服务器,显示为 -bash-4.2$
    linux创建用户并授权
    Linux 磁盘挂载
    ping与 curl与telnet 使用
    Docker运行参容器参数说明
    Docker挂载安装Nginx
    Docker学习
    Linux下 文件存放规范
  • 原文地址:https://www.cnblogs.com/brian-sun/p/15481517.html
Copyright © 2011-2022 走看看