• Shell编程(四)Shell变量


    1. 自定义变量(仅在当前shell生效)

    1.1 定义变量

    #!/usr/bin/bash
    ip=115.239.210.27
    
    if ping -c1 $ip &>/dev/null ;then    # &>/dev/null: output of ping $ip is null
        echo "$ip is up."
    else
        echo "$ip is down."
    fi

    1.2 输入变量

    #!/usr/bin/bash
    read ip
    
    ping -c1 $ip &>/dev/null
    if [ $? -eq 0 ]; then
        echo "$ip is up."
    else
        echo "$ip is down."
    fi

    1.3 位置变量 ($1, $2, $3...${10}....)

    #!/bin/bash
                           
    ping -c1 $1 &>/dev/null
    if [ $? -eq 0 ]; then
        echo "$1 is up."   
    else
        echo "$1 is down." 
    fi

    1.4 预定义变量 ( $ $0, $*, $@, $#, $$, $!, $? $ )

    #!/bin/bash
    echo "the par of 2: $2"
    echo "the par of 1: $1"
    echo "the par of 4: $4"
    
    echo "all par: $*"     
    echo "all par: $@"     
    echo "the num of par: $#"
    echo "the PID of cur process: $$"
      
    echo '$1='$1           
    echo '$2='$2           
    echo '$3='$3           
    echo '$*='$*           
    echo '$@='$@           
    echo '$#='$#
    echo '$$='$$ 

    1.5 综合

    #!/bin/bash
    # if user have no parma
    if [ $# -eq 0 ]; then  
        echo "usage: `basename $0` file"
    fi
    
    
    if [ ! -f $1 ]; then     # not a file
        echo "erro file!"  
    fi
      
    echo "ping........."   
      
    for ip in `cat $1`     
    do
        ping -c1 $ip &>/dev/null
        if [ $? -eq 0 ];then    
            echo "$ip is up."       
        else
            echo "$ip is down."     
        fi
    done

    2. 环境变量(在当前shell和子shell有效)

    2.1 export

    echo "ip1 is $ip1"
    echo "ip2 is $ip2"

    (ip2 是环境变量)

    2.2  在一个bash文件中调用其他bash文件

     

    2.3 env 查看所有环境变量

    3. 命令代换: ` `或 $()

    #! /bin/bash
    
    pwd
    ls
    
    DATA=$(date)
    
    echo $DATA
    
    $(curl www.itcast.cn > 1.html)
    
    pwd

    4. 算术代换

    4.1 $(()), expr

    4.2 $[], let

    5. 小数计算

    echo "scale=3;6/4" |bc

    awk 'BEGIN{print 1/2}'

     

     6. 变量"内容"的删除和替换

    6.1 从前往后删除(#:最近匹配; ##:贪婪匹配)

    6.2 从后往前删除(%:最近匹配; %%:贪婪匹配)

    6.3 索引方式切片

     

    6.4 替换

     

    贪婪匹配

    6.6 替代 ${变量名-新的变量值}

    变量没有被赋值:会使用“新的变量值”替代

    变量有被赋值(包括空值):不会被替代

    6.61 - 和 :-

     

    6.62 + 和 :+

    6.63 = 和 :=

     

    6.64 ? 和 :?

     

  • 相关阅读:
    [20211108]索引分裂块清除日志增加(唯一索引)2.txt
    [20220104]in list 几种写法性能测试.txt
    [20211215]提示precompute_subquery补充.txt
    [20211217]滑稽可笑的程序代码2.txt
    SourceTree通过配置SSH来链接GitLab
    Docker在虚拟机中的安装
    .Net 6 Log4Net【.Net Core】
    es(elasticsearch)磁盘清理记录
    JSON 之 Jackson
    git FAQ
  • 原文地址:https://www.cnblogs.com/douzujun/p/10361832.html
Copyright © 2020-2023  润新知