zoukankan      html  css  js  c++  java
  • shell 变量的定义,赋值,运算

    一、变量类型

    1.1、自定义变量

    1.定义变量

    不能使用纯数字命名,不能使用横杠命名	
    变量名=变量值
    [root@localhost ~]# name=erha   		
    

    2.引用变量

    $变量名 或者 ${变量量名}
    

    3.查看变量值

    echo	$变量量名
    [root@localhost ~]# echo $name
    erha	
    

    4.取消变量

    [root@localhost ~]# unset  name
    [root@localhost ~]# echo $name
    

    5.作⽤用范围
    仅在当前shell中有效

    1.2、系统环境变量

    1.定义环境变量

    export	变量名
    将⾃定义变量转换成环境变量,先定义,后准换
    [root@localhost ~]# name=huahua
    [root@localhost ~]# export name
    
    

    2.引用环境变量

    $变量名	或 ${变量名}	
    

    3.查看环境变量

    echo	$变量名
    [root@localhost ~]# echo $name
    huahua
    

    4.取消环境变量

    unset	变量量名	
    [root@localhost ~]# unset name
    [root@localhost ~]# env |grep name
    #取消该变量后,查询系统环境变量中,就没name这个变量了。
    

    5.变量作⽤用范围
    在当前shell和⼦shell有效

    1.3、系统环境变量
    $1	$2	$3	$4	$5	$6 ...
    #$1代表向脚本内传递的第一个位置参数,$2代表第二个,依次类推。	
    
    1.4、预定义变量
    $0	脚本⽂文件名 	
    $* $@	所有的参数 	
    $#	参数的个数	
    $$	当前进程的 PID 	
    $!	上一个后台进程的 PID 	
    $?	上一个命令的返回值 0 表示成功
    
    小脚本
    [root@localhost ~]# cat var.sh 
    #!/bin/bash
    echo "第一个参数:$1"
    echo "第二个参数:$2"
    echo "第三个参数:$3"
    echo "第四个参数:$4"
    echo "所有参数为:$*"
    echo "参数个数为:$#"
    echo "当前进程ID为:$$"
    echo "上一个进程ID为:$!"
    echo "当前脚本名称为:$0"
    echo "当前脚本执行结果:$?"
    
    执行如下
    [root@localhost ~]# sh var.sh 1 2 3 4 5 
    第一个参数:1
    第二个参数:2
    第三个参数:3
    第四个参数:4
    所有参数为:1 2 3 4 5
    参数个数为:5
    当前进程ID为:8875
    上一个进程ID为:
    当前脚本名称为:var.sh
    当前脚本执行结果:0
    

    二、变量赋值

    2.1、直接赋值
    [root@localhost ~]# name=huahua
    #注意等号两边不能有空格
    
    2.2、从键盘读入
    [root@localhost ~]# read 参数 变量名
    可选参数
    -p :提示信息
    -t :等待时间
    -n :读入字符数
    
    小脚本
    解压文件到指定位置
    [root@localhost ~]# cat tr.sh 
    #!/bin/bash
    read -p "请输入要解压的文件,及解压目录:" src dst
    if [ -e $src ];then
    	tar -zxvf $src -C $dst
    else
    	echo "没有该文件..."
    fi
    
    2.3、强引用与弱引用
    "" :弱引用,特殊字符依旧有特定含义。
    [root@localhost ~]# age=18
    [root@localhost ~]# echo "$age"
    18
    
    '' :强引用,所有字符被当作普通字符处理。
    [root@localhost ~]# echo '$name'
    $name
    
    
    2.4、命令执行结果引用
    `` :反引号,不过容易与引号混淆。
    [root@localhost ~]# t1=`date +%F`
    [root@localhost ~]# echo $t1
    2020-01-20
    
    $():$加小括号,不容易混淆,一般使用这种方式较多
    [root@localhost ~]# t2=$(date +%F)
    [root@localhost ~]# echo $t2
    2020-01-20
    
    

    三、数学运算

    3.1、整数运算(expr)
    加 减 乘 除 取余
    +  -  * /   % 
    
    [root@localhost ~]# expr 1 + 1
    2
    [root@localhost ~]# expr 1 - 1
    0
    [root@localhost ~]# expr 1 * 1
    1
    [root@localhost ~]# expr 1 / 1
    1
    [root@localhost ~]# expr 1 % 1
    0
    
    3.2、整数运算($(()))
    加 减 乘 除 取余 幂运算
    +  -  * /   %   **
    
    [root@localhost ~]# echo $((1 + 2))
    3
    [root@localhost ~]# echo $((1 - 2))
    -1
    [root@localhost ~]# echo $((1 * 2))
    2
    [root@localhost ~]# echo $((1 / 2))
    0
    [root@localhost ~]# echo $((1 % 2))
    1
    [root@localhost ~]# echo $((1 ** 2))
    1
    
    3.3、整数运算($[])
    与 $(())类似
    [root@localhost ~]# echo $[1+2]
    3
    [root@localhost ~]# echo $[1-2]
    -1
    [root@localhost ~]# echo $[1*2]
    2
    [root@localhost ~]# echo $[1/2]
    0
    [root@localhost ~]# echo $[1**2]
    1
    
    3.4、整数运算(let)
    加 减 乘 除 取余 幂运算
    +  -  * /   %   **
    
    [root@localhost ~]# let nu=2**4
    [root@localhost ~]# echo $nu
    16
    
    3.5、小数运算
    可以使用bc命令
    [root@localhost ~]# echo "1.1"+"2.3"|bc
    3.4
    
  • 相关阅读:
    CLR的黑暗面——栈与引用对象
    delegate的另类玩法
    一个比较bt的xslt
    关于string
    jQuery核心讲解
    Linux环境进程间通信(二):信号(上)
    ubuntu10.10 轻松安装 Nvidia 官方驱动
    Linux环境进程间通信(二): 信号(下)
    Linux 信号signal处理机制
    java.lang.ProcessBuilder类和java.lang.Process类
  • 原文地址:https://www.cnblogs.com/hjnzs/p/12218467.html
Copyright © 2011-2022 走看看