zoukankan      html  css  js  c++  java
  • shell脚本学习------变量

    一、自定义变量

    变量:用一个固定的字符串表示一个不固定的内容

    变量常见类型,shell变量如下4类
    自定义变量
    系统环境变量
    位置参数变量
    预先定义变量

    1、定义变量   '变量名=变量值'  不许使用数字命名,不许使用'-'命名

    2、引用变量  '变量名 或  ${变量名}'

    3、查看变量  'echo $变量名' set显示所有变量,包括自定义变量和环境变量 

    set | grep a
    

    4、取消变量  'unset 变量名'  变量作用范围:仅在当前shell脚本中有效

    数值运算:

    a=1
    b=2
    c=$a+$b
    d=$a+$b
    echo $c|bc
    echo $d
    

    运行结果:

     输出变量:首先ifconfig的参数内容如下:

     输出特定的行变量

    #!/usr/bin/bash
    RX= ifconfig lo | grep "RX"
    echo $RX
    

     

    如果将变量变为字符串

    #!/usr/bin/bash
    RX2="ifconfig lo | grep RX"
    echo $RX2
    

     

    此时会当作字符串输出

    如果输出变量

    #!/usr/bin/bash
    RX3=$(ifconfig lo | grep "RX")
    echo $RX3
    

     

    脚本示例:

    #!/usr/bin/bash
    
    ping -c1 192.168.56.11 &>/dev/null && echo "ip 192.168.56.11 ok"||echo "ip 192.168.56.11 error"
    

    这段代码的意思为ping -c1 192.168.56.11,然后将执行输出结果丢弃,如果成功则打印ip 192.168.56.11 ok,否则打印ip 192.168.56.11 error,执行结果如下

     

    我们可以使用变量改进

    #!/usr/bin/bash
    
    IP=192.168.56.11
    ping -c1 ${IP} &>/dev/null && echo "ip ${IP} ok"||echo "ip ${IP} error"
    

     执行结果如下:

     

    二、系统环境变量

    1、定义环境变量   'export export变量,将自定义变量转换成环境变量',定义环境变量时,变成公共基础模块

    export IP='192.168.0.1'
    echo $IP
    

    2、引用环境变量  '$变量名 或 ${变量名}'

    3、查看环境变量  'echo $变量名  env|grep  Name'

    4、取消环境变量  'unset 变量名'

    5、变量作用范围  '在当前shell和子shell有效'

    echo $HOME
    echo $UID
    

    使能project7.sh的变量,在project8.sh

    加载系统环境变量

    source /etc/init.d/functions
    

    project7.sh

    #!/usr/bin/bash
    
    IP=192.168.56.11
    ping -c1 ${IP} &>/dev/null && echo "ip ${IP} ok"||echo "ip ${IP} error"
    

    project8.sh

    #!/usr/bin/bash
    source ./project7.sh
    echo $UID
    echo $PATH
    echo $IP
    

    执行结果如下:

    #!/usr/bin/bash
    
    ping -c1 $IP $>/dev/null
    if [ $? -eq 0 ];then
    	echo -e "33[32m ip $IP is OK! 33[0m"
    else
    	echo -e "33[31m ip $IP is Err! 33[0m"
    fi

    三、位置参数变量

    脚本参数传值:'$1   $2   $3   $4   $5   $6   $7   $8   $9   $10'

    #!/usr/bin/bash
    
    IP=$1
    ping -c1 $IP>/dev/null
    if [ $? -eq 0 ];then
    	echo "$1 is OK"
    else
    	echo "$1 is Err!"
    fi

     执行结果如下,带参数执行:

      read读取参数

    #!/usr/bin/bash
    
    read -p "Ples is Ping Network IP:" ip
    
    ping -c1 $ip &>/dev/null
    if [ $? -eq 0 ];then echo "$ip is OK" else echo "$ip is Err" fi

    执行结果:

    四、预先定义变量

    '$0'   脚本名

    '$*'  所有的参数

    '$@'  所有的参数

    '$#'  参数的个数

    '$$'  当前进程的PID

    '$1'  上一个后台进程的PID

    '$?'  上一个命令的返回值为0表示成功

    例:

    echo "	第	3	个位置参数是$3"
    echo "	第	2	个位置参数是$2"
    echo "	第	1	个位置参数是$1"
    echo "	所有参数是:	$*"
    echo "	所有参数是:	$@"
    echo "	参数的个数是:	$#"
    echo "	当前进程的	PID	是:	$$"
    echo '$4='$4
    echo '$5='$5
    echo '$6='$6
    echo '$*='$*	
    echo '$@='$@
    echo '$#='$#
    echo '$$='$$
    

    执行结果如下:

    输出文件名:

    echo $(basename $0)
    

  • 相关阅读:
    一种解决h5页面背景音乐不能自动播放的方案
    VUE中的v-if与v-show
    setInterval(code, time)中code传递参数办法
    CSS——图片替换方法比较
    JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
    JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换
    JSON(一)——JSON与JavaScript的关系
    详解Ajax请求(四)——多个异步请求的执行顺序
    详解Ajax请求(三)——jQuery对Ajax的实现及serialize()函数对于表单域控件参数提交的使用技巧
    详解Ajax请求(二)——异步请求原理的分析
  • 原文地址:https://www.cnblogs.com/longlyseul/p/14820480.html
Copyright © 2011-2022 走看看