shell变量的用法

前言

​ 变量:字面意思就是会变化的量,用来存放数据的容器,可以理解为桶和水的关系,桶就是可量的容器,水就是这个桶需要存放的具体的物体。变量在每个语言中都是非常重要和存在的,不通的语言有不同的用法,但是根本都是一样的,就是一个载体。

1. 变量的规范和格式

1.1 格式

变量名 = 变量值

注:shell 中变量的赋值为直接赋值,直接修改变量的值即可,对变量值的修改,变量是临时的存储在内存中,所以断电或其他使内存数据丢失的行为变量都会消失,除非写入配置文件中。

1.2 变量的规范

  • 不能以数字开头,或者纯数字作为变量

    # 不正确的写法
    1_age=20; 1="zhangsan"
    
  • 不能含除了“_” 以外的特殊字符作为变量

    # 不正确的写法
    name#="zhangsan" ;  @name="姓名"
    
  • 不能使用系统内置变量

  • 建议自定义的变量一般为小写,系统变量为大写;

    # 
    name='李四'; JAVA_HOME=/app/jdk1.8 ; PATH=$PATH:$JAVA_HOME/bin
    
  • 建议驼峰命名法,简明知意

#驼峰命名
colorStyle='red'; empNum=1010

2.变量的分类

2.1 位置变量

​ 用来指定位置传参使用,一般在执行脚本时参数需要通过外部传输进脚本内,就可以在脚本内使用位置变量来接收外部的入参。

用法:$1,$2,$3,… #这里的数字即代表入参的位置

[root@test ~]# cat positionVar.sh
#! /bin/bash
# 定义三个变量,姓名,年龄,出生日期
uname=$1
age=$2
birth=$3
# 打印上述信息
echo -e "姓名:$uname\n年龄:$age\n生日:$birth"
# 在执行脚本时,脚本后面的参数用空格分隔,对应位置参数1,2,3
[root@test ~]# sh positionVar.sh "小明" 25 "2021-04-07"  
姓名:小明
年龄:25
生日:2021-04-07

2.2 预定义变量

​ bash 内部的变量,可以引用但不可以赋值

示例:

####### 预定义变量如下 ############
$0		# 显示当前脚本名称或者程序名
$$ 		# 显示当前的进程号 pid
$#		# 显示当前位置变量的个数
$?		# 显示上一个命令的执行结果:0:成功,非0:失败  -- 常用做命令执行的成功与否
$*		# 显示变量的信息
$!		# 最近一次执行的进程号

2.3 环境变量

​ 环境变量一般是用于操作系统内部使用的变量,在linux中全局的环境变量配置文件 /etc/profile, 用户家目录下的.bash_profile;如PATH 变量。

2.4 自定义变量

​ 顾名思义用户自定义的变量

name='swuk';emp="wangwu" # 可以使用单引号或者双引号,当使用单引号时里面带有变量名不生效

3.变量的范围与引用

3.1 引号的运用

‘’ # 单引号,会屏蔽特殊符号比如:$

echo '$PATH'
结果:
$PATH

“” # 双引号, 不会屏蔽特殊符号

echo "$PATH"
结果:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

`` # 反引号,命令是输出结果做为值,赋值给变量;

name=`echo zhangsan`
echo $name
结果:
zhangsan

3.2 变量的引用

​ 变量的引用使用$符号

​ 用法:${变量名} 或者 $变量名

# ${变量名}  这种写法在理解和一些特殊场合都可以适用的
x=ab
y=c
echo ${x}${y}
结果:abc

# $变量名
x=ab
y=c
echo $x$y
结果:abc

3.3 变量的范围

全局变量:在当前进程或其他进程中都是有效的,比如PATH等变量,通常被export 关键字修饰的变量都是全局变量。

[root@svr7 ~] # export a=123  #定义全局变量
[root@svr7 ~] # echo $a
123
[root@svr7 ~] # bash #开启一个子进程
[root@svr7 ~] # echo $a
123

局部变量:只在当前进程中有效,未被exprot 关键字修饰的变量

[root@svr7 ~] #  a=123  #定义局部变量
[root@svr7 ~] # echo $a
123
[root@svr7 ~] # bash #开启一个子进程
[root@svr7 ~] # echo $a

总结

这里简单的介绍了一下变量的用法,但在时间的工作中位置变量和预定义变量在shell脚本中用得还是比较多的,老铁们有空可以练习记忆一些。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值