• (二)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原因我改成单引号了
    
  • 相关阅读:
    Oracle(创建序列)
    BoostrapValidator使用方法
    SpringBoot(八)----SpringBoot配置日志文件
    SpringBoot(七)-----查看配置报告
    eclipse导入新项目后,运行时找不到主类解决办法(转载)
    严重性代码说明项目文件行 禁止显示状态错误 C4996 fopen('fscanf'、strcmp):This function or variable may be unsafe. 最全解决办法
    Spring Boot(六)----application.properties文件加载顺序
    No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
    异常处理(一):Non-parseable POM C:Usersadmin.m2 epositoryorgspringframework问题解决方案
    Spring Boot(五)----profile文件路径设置
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/8873663.html
Copyright © 2020-2023  润新知