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}'               输出分割的第一列
    
  • 相关阅读:
    ubuntu13.04 安装java
    PHP shell模式下执行PHP文件报错
    python urllib2 cookie 设置
    新浪微博模拟登录(Python+RSA加密算法)附源代码(转)
    Python 实现腾讯微博模拟登录 (附源码)
    python中的字符串与16进制的转换
    mysql in和exists性能比较和使用
    linux分析dump vmcore文件
    SecureCRT密钥key远连接程ssh证书登录Linux
    /tmp清理机制
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/9875594.html
Copyright © 2011-2022 走看看