zoukankan      html  css  js  c++  java
  • Linux中bash编程

    bash编程也叫shell编程

    预定义变量
            $? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确的执行;如果这个变量返回的值非0(具体是那个数,有命令自己来决定),则证明上一个命令执行不正确。
            $$当前进程的进程号(PID)
            $!后台运行的最后一个进程的进程号(PID)
      运算符
            declare 声名变量的类型  
            declare [+/-][选项] 变量名
            - 给变量设定类型属性
            + 取消变量的类型属性
            -i 将变量声名为整数型
            -x将变量什申明为环境变量
            -p 显示指定变量的被声名的类型

    举例:

    a=1 b=2 declare -i c = $a+$b c=$(($a+$b))

    注意用双小括号,因为Linux中认为一切皆为字符。

    如果不加()当成一个命令,shell脚本中Linux命令在 $() 中运行,当然可以直接写命令,如果则一些引用命令时 就要 $()


    单分支if  条件语句

    if [ 条件判断式 ];then
        程序
    fi
    or  
    if [ 条件判断式 ]
        then
            程序
    fi

    判断登录用户是否为root用户:

    #!/bin/bash
    
    #grep 获取行通配符
    #cut 获取列统配符,以 = 分割 2 获取第二列
    login_name=$(env | grep LOGNAME | cut -d "=" -f 2)
    #echo $login_name
    
    if [ "$login_name" != "root" ]
    
            then
                    echo 'isnot root'
    fi

    判断根分区的占用率

    #!/bin/bash
    #df -h 任性话显示磁盘的利用率
    #awk 获取第五列
    #cut 对字符用 % 进行分割 获取第一列值
    result=$( df -h | grep sda1 | awk '{print  $5}'  | cut -d % -f 1)
    
    if [ "$result" -lt '90' ]
            then
                    echo 'the root dir  is not full'
    
    fi

    双分支if条件语句

    if [ 条件判断式 ]
        then
             ...
        else
            ...
    fi

    判断nginx 是否在运行 (最好不用包含nginx作为文件名)

    #!/bin/bash
    result=$(ps aux | grep nginx | grep -v grep)
    
    if [ -n "$result" ]
            then
                    echo "$(date) nginx is ok !"
            else
                    echo "$(date) nginx is not ok !"
    
                    sudo /etc/init.d/nginx start &>/dev/null
                    echo "$(date) restart nginx !!"
    fi

    多分支if语句

    if []
        then 
    elif []
        then
    ...
    else 
       ...
    if
  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/webph/p/7169243.html
Copyright © 2011-2022 走看看