zoukankan      html  css  js  c++  java
  • (二)shell变量

    (1)自定义变量

    • 定义变量 变量名=变量值 变量名必须以字母或下划线开头,不能数字开头,区分大小写,ip=114.114.114.114
    • 引用变量: $变量名 ${变量名}
    • 查看变量: echo $变量名 或set(查看所有自定义变量和环境变量)
    • 取消变量: unset 变量名
    • 作用范围: 仅在当前shell中生效
    • 变量赋值之直接赋值
    #!/bin/bash
    ip=114.114.114.114
    if ping -c1 $ip &>/dev/null;then
            echo "$ip is up"
    else
            echo "$ip is down"
    fi
    
    • read方式赋值
    #!/bin/bash
    #read:用户终端输入的值赋予变量ip,-p选项只是给用户一个提示可以省略
    read -p "please touch a ip:" ip
    ping -c1 $ip &>/dev/null
    if [ $? -eq 0 ];then
            echo "$ip is up"
    else
            echo "$ip is down"
    fi
    
    • 位置变量赋值:$1 $2 ;执行脚本后面的参数,例如114.114.114.114传给$1,114.114.115.115传给$2
    ping -c1 $1 &>/dev/null
    if [ $? -eq 0 ];then
            echo "$1 is up"
    else
            echo "$1 is down"
    fi
    
    执行脚本:bash ping01.sh 114.114.114.114  114.114.115.115
    
    • 自定义变量只在当前shell生效
    在当前shell定义变量:name1=123
     cat test.sh 
    echo $name1
    bash test.sh  发现为空,说明定义变量只在当前shell生效,bash方式执行在子shell,说明自定义变量只在当前shell生效,如果想调用,需要使用export name1把变量修改成环境变量
    

    (2)环境变量

    • 定义环境变量:
    方法一:export 变量名=变量值
    方法二:export 自定义变量名
    
    • 引用变量:$变量名 ${变量名}
    • 查看环境变量:echo $变量名 或 export
    • 取消环境变量:unset 变量名
    • 变量作用范围:在当前shell和子shell中有效
    •  系统自带的环境变量: $USER $PWD
      

    (3)位置变量

    • 位置变量:不用事先定义
    $1	$2	$3 ${10}
    

    (4)预定义变量

    $0	脚本名
    $*	所有的参数
    $@	所有的参数
    $#	参数的个数
    $$	当前进程的PID
    $!	上一个后台进程的PID,例如ls &
    $?	上一个命令的返回值,0表示成功,非0表示失败
    
    • 位置变量和预定义变量例子
    if [ $# -eq 0 ];then
            echo "Usage $(basename $0) file"
            exit
    fi
    if [ ! -f $1 ];then
            echo "$1 is error file!"
            exit
    fi
    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
    

    (5)变量赋值

    • 显示赋值:变量名=变量值
    ip1=114.114.114.114
    name="wang tian"
    today1='date +%F'
    today2=$(date +%F)
    
    • read方式赋值
    read 变量名
    read -p "" 变量名
    read -t 2 -p "" 变量名
    read -n 2 变量名
    
    • 例子:
    #!/bin/bash
    read -p "请输入你的姓名,性别,年龄 [ e.g wf m 20 ]" name sex age
    echo "你的姓名是$name,性别:$sex,年龄:$age"
    
    • 变量引用注意事项
    ""  :强引用,引用变量
    ''	:弱引用,不引用变量
    
    • 命令的结果作为变量
    命令替换:$() 相当于两个反引号 ,反引号中的shell会被先执行
    touch ’date +%F’_file.txt      注意是反引号哦,这里markdown原因我改成单引号了
    
  • 相关阅读:
    工作流二次开发之新增表单实践(二)
    layui表格及工作流二次开发实践(一)
    记一个递归封装树形结构
    SpringCloud微服务之宏观了解
    统一结果返回&统一异常处理
    mybatis-Plus 实践篇之CRUD操作
    修改MariaDB-root密码
    iftop-监控服务器实时带宽情况
    Wordpress安装-报错说明
    MariaDB忘记root密码
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/8873663.html
Copyright © 2011-2022 走看看