Linux_shell变量

本文详细介绍了LinuxShell中的系统变量、用户自定义变量、变量定义、设置环境变量(如export和source)、位置参数变量以及预定义变量的使用方法和案例。重点展示了如何定义、撤销变量,使用$(...)和反引号,以及在shell脚本中处理命令行参数和进程状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Shell的变量

1.1. Shell变量介绍

  1. Linux Shell中的变量分为:系统变量和用户自定义变量
  2. 系统变量: $HOME、$PWD、$SHELL、$USER等等,比如 : echo $HOME 等等
[root@CtCentos01 shcode]# echo $HOME
/root
[root@CtCentos01 shcode]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@CtCentos01 shcode]# echo $PWD
/root/shcode
  1. 显示当前shell中所有变量: set


2. shell变量的定义

2.1. 基本语法:

  1. 定义变量:变量名=值

变量名和值之间的等号之间不能有空格

  1. 撤销变量:unset变量
  2. 声明静态变量:readonly变量,注意:不能unset

2.2. 快速入门:

案例1 : 定义变量A

  1 #!/bin/bash
  2 #案例1 : 定义变量A
  3 A=100
  4 #输出变量需要加上$
  5 echo A=$A
  6 echo "A=$A"
  7 echo 'A=$A'

案例2 : 撤销变量A

  8 #案例2 : 撤销变量A
  9 unset A
 10 echo "A=$A"

案例3 : 声明静态的变量B=2,不能unset

 11 #案例3 : 声明静态的变量B=2,不能unset
 12 readonly B=2
 13 echo "B=$B"
 14 unset B

输出结果:

输出变量前面必须加上符号$

案例4: 可把变量提升为全局环境变量,可供其他shell程序使用【该案例后面讲】

2.3. 定义变量的规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如5A=200(X)
  2. 等号两侧不能有空格

  1. 变量名称一般习惯为大写(遵守即可)

2.4. 将命令的返回值赋给变量

  1. A=`date`,运行里面的命令,并把结果返回给变量A

注意:这里的反引号在键盘上是~键的位置

  1. A=$(date)等价于反引号
#将指令返回的结果赋给变量
C=`date`
D=$(date)
echo "C=$C"
echo "D=$D"


3. 设置环境变量

3.1. 基本语法

  1. export 变量名=变量值 (功能描述 : 将shell变量输出为环境变量)
  2. source 配置文件 (功能描述 : 让修改后的配置信息立即生效)
  3. echo $变量名 (功能描述 : 查询环境变量的值)

3.2. 快速入门

  1. /ect/profile文件中定义TOMCAT_HOME环境变量

先转到/opt/文件夹,用其打开/etc/profile

[root@CtCentos01 shcode]# cd /opt/
[root@CtCentos01 opt]# vim /etc/profile

在其中定义环境变量TOMCAT_HOME等于/opt/tomcat的值

#定义一个环境变量
export TOMCAT_HOME=/opt/tomcat
  1. 查看环境变量TOMCAT_HOME的值

直接输出TOMCAT_HOME的值我们发现为空,因为修改后的配置信息没有立即生效,我们通过source /etc/profile让其立即生效再输出,可以发现TOMCAT_HOME的值已经变成了/opt/tomcat

[root@CtCentos01 opt]# echo $TOMCAT_HOME

[root@CtCentos01 opt]# source /etc/profile
[root@CtCentos01 opt]# echo $TOMCAT_HOME
/opt/tomcat

注意:在输出TOMCAT_HOME环境变量前,需要让其生效source /etc/profile

  1. 在另外一个shell程序中使用TOMCAT_HOME

我们转到/root/shcode/路径下,再次打开var.sh

[root@CtCentos01 opt]# cd /root/shcode/
[root@CtCentos01 shcode]# ls
hello.sh  service.sh  var.sh
[root@CtCentos01 shcode]# vim var.sh 

我们直接输出TOMCAT_HOME的值

#使用环境变量TOMCAT_HOME
echo "TOMCAT_HOME=$TOMCAT_HOME"
[root@CtCentos01 shcode]# ./var.sh

可以看出来TOMCAT_HOME的值已经等于/opt/tomcat了,并且可以在另外的shell程序var.sh中使用(TOMCAT_HOME变量的是在/ect/profile定义的)


4. 位置参数变量

4.1. 介绍

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量比如 :./myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息

4.2. 基本语法

  • $n (功能描述:n为数字,$0代表命令本身,$1-S9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
  • $* (功能描述: 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
  • $@ (功能描述: 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
  • $# (功能描述 : 这个变量代表命令行中所有参数的个数)

4.3. 位置参数变量

案例: 编写一个shell脚本 myshell.sh ,在脚本中获取到命令行的各个参数信息

  1. 我们先创建一个shell脚本myshell.sh
[root@CtCentos01 shcode]# vim myshell.sh
  1. 在脚本中输出对应的位置参数信息
#!/bin/bash
echo "0=$0 1=$1 2=$2"
echo "所有的参数=$*"
echo "$@"
echo "参数的个数$#"
  1. 添加权限后,我们给脚本传入两个参数100和200,可以看到第一个参数是100,第二个参数是200
[root@CtCentos01 shcode]# chmod u+x myshell.sh
[root@CtCentos01 shcode]# ls
hello.sh  myshell.sh  service.sh  var.sh
[root@CtCentos01 shcode]# ./myshell.sh 100 200
0=./myshell.sh 1=100 2=200
所有的参数=100 200
100 200
参数的个数2

5. 预定义变量

5.1. 基本介绍

就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

5.2. 基本语法

  • $$ (功能描述 : 当前进程的进程号( PID ))
  • $! (功能描述 : 后台运行的最后一个进程的进程号( PID ) )
  • $? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行如果这个变量的值为非0(具体是哪个数,由命令自己来决定》,则证明上一个命令执行不正确了。)

5.3. 应用实例

在一个shell脚本中简单使用一下预定义变量

  1. 创建一个preVar.sh脚本
[root@CtCentos01 shcode]# vim preVar.sh
  1. 用预定义变量获取不同进程的进程号和他们的执行状态
#!/bin/bash
echo "当前执行的进程id=$$"
#以后台的方式运行一个脚本,并获取它的进程号
/root/shcode/myshell.sh &
echo "最后一个后台方式运行的进程id=$!"
echo "执行的结果是=$?"
  1. 运行脚本,得到两个进程的进程号
[root@CtCentos01 shcode]# chmod u+x preVar.sh
[root@CtCentos01 shcode]# ls
hello.sh  myshell.sh  preVar.sh  service.sh  var.sh
[root@CtCentos01 shcode]# ./preVar.sh
当前执行的进程id=15739
最后一个后台方式运行的进程id=15740
执行的结果是=0
[root@CtCentos01 shcode]# 0=/root/shcode/myshell.sh,1=,2=
所有的参数=

参数的个数0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值