zoukankan      html  css  js  c++  java
  • Shell编程的基本语法

    Shell编程

    创建sh文件

    touch test.sh
    vim test.sh
    
    写入如下内容
        #!/bin/bash
        a="hello"
    
    运行
        chmod +x /root/test.sh
        . ./test.sh
        echo $a
    
    可以运行unset撤销变量
    
    export可以设置全局变量
    

    系统变量

    set 查看系统变量
    
    常见的系统变量
        echo $HOME                  /root
        echo $PWD                   /root
        echo $SHELL                 /bin/bash
        echo $USER                  root
    
    其他常用变量
        echo $?                     返回上一条语句的返回值,0表示执行成功
        echo $$                     当前进程号
        echo $0                     当前脚本名
        echo $n                     获取运行脚本传递的第n个参数
        echo $#                     传递参数的个数
        echo $*                     表示参数列表,如果使用引号包裹输出整体
        echo $@                     表示参数列表,如果使用引号包裹输出还是列表
    
    for item in $@
    do
    echo $item
    done
    
    ./test.sh 1 2 3 4 5
    

    单引号和双引号的区别

    echo "Hi, $a"                   Hi, hello
    echo 'Hi, $a'                   Hi, $a
    

    算术表达式

    res=`expr 1 + 2`
    

    循环

    for循环
        for item in 1 2 3
        do
        echo $item
        done
    
    while循环
        item=1
        while((item<=3))
        do
            echo $item
            let item++
        done
    
    case语句
        case $1 in 
        a)
            echo "aaa"
            ;;
        b)
            echo "bbb"
            ;;
        *)
            echo "(a|b)"
        esac
        运行./test.sh a 输出 aaa
    

    read

    read -p "input a number" num
    echo $num
    

    if

    if [ $1=a ]
    then
        echo "aaa"
    elif [ $1=b ]    
    then
        echo "bbb"
    else
        echo "--------"
    fi
    
    数值条件判断
        =           等于
        -lt         小于
        -le         小于等于
        -ep         等于
        -gt         大于
        -ge         大于等于
        -ne         不等于
    
    文件条件判断
        -f test.sh  判断文件是否存在
        其他的判断符
            -r      是否读权限
            -w      是否写权限
            -x      是否执行权限
            -f      是否存在
            -s      是否存在且不为空
            -d      是否存在并且是目录
    

    函数

    function fn()
    {
        echo $1, $2;
        return $(($1+$2));
    }
    
    fn 1 2;
    echo $?;
    

    cut

    文本分割操作
    
    a='a|a|c|d'
    echo $a | cut -d '|' -f 2                       输出结果 b
    

    sort

    排序操作
    
    echo $a | sort -t '|' -k 2                      按照第2列字符串排序
    echo $a | sort -t '|' -k 2 -u                   按照第2列字符串排序,去重
    echo $a | sort -t '|' -k 2n                     按照第2列数字排序
    echo $a | sort -t '|' -k 2nr                    按照第2列数字倒序排序
    
    cat file | sort | uniq
    

    sed

    sed -i '1d' file                                删除文件的第一行
    sed -i '1,$d' file                              删除文件的所有行
    sed -i '$d' file                                删除文件的最后一行
    sed -i '/aaa/'d file                            删除文件中包含aaa的行
    sed -i 's/aaa/bbb/g' file                       将所有的aaa替换成bbb
    

    awk

    echo $a | awk -F "|" '{print $1}'               输出分割的第一列
    
  • 相关阅读:
    RecyclerView 数据刷新的几种方式 局部刷新 notify MD
    【图片】批量获取几万张图片
    RV BaseRecyclerViewAdapterHelper 总结 MD
    RecyclerView.ItemDecoration 间隔线
    Kotlin【简介】Android开发 配置 扩展
    Kotlin 特性 语法糖 优势 扩展 高阶 MD
    一个十分简洁实用的MD风格的UI主框架
    折叠伸缩工具栏 CollapsingToolbarLayout
    FloatingActionButton FAB 悬浮按钮
    Glide Picasso Fresco UIL 图片框架 缓存 MD
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/9875594.html
Copyright © 2011-2022 走看看