【shell编程---变量】

shell 编程 — 变量

首先要知道有那些种类的变量
Linux中 shell 变量分为 系统变量 和 用户自定义变量,这里不区分,所以单独列出,只是为了能快速上手。

  1. 用户变量
  2. 环境变量
  3. 位置参数变量
  4. 预定义变量

用户变量

  • 定义变量:变量名=值 (等号两边无空格)
  • 撤销变量:unset 变量名
  • 声明静态变量:readonly 变量名。(该变量不能unset)

例一:定义变量

#!/bin/bash
#定义变量 A , 并赋值为100
A=100 #注等号两边无空格,且结尾不用加分号
echo "A=$A" #输出A的值 
#控制台输出结果
A=100
:<<! 其他的输出形式,自行测试
echo $A
echo A=$A
echo "A=${A}" #{} 可以用来确定变量边界
!

例二:撤销变量

#!/bin/bash
#定义变量
A=102
echo A=$A
#撤销变量
unset A
echo A=$A
#显示结果
A=102
A=    #对,这里就是啥都没有

例三:声明静态变量,不能unset

#!/bin/bash
readonly A=3 #声明静态变量
echo A=${A}

#错误示范 -- 销毁静态变量
unset A
echo A=${A}
#能在文本里写出来,但会在执行时报错

例四:利用变量存储命令返回结果
这里以 date 命令来演示

#!/bin/bash
A=`date` #存储当前时间,注意是 ` 号,不是单引号
echo A=${A}

#令一种写法
B=$(date)
echo B=$B

环境变量(全局变量)

  • 设置环境变量语法 :export 变量名=变量值
  • source 配置文件 :
  • echo $变量名 :查询变量值

例一:定义环境变量
编辑/etc/profile
添加 export NIHAO="nihao"
再在Linux命令行执行:source /etc/profile
最后在Linux命令行输入:echo $NIHAO
这样就能设置好我们自定义的环境变量了

位置参数变量

适用场景:我们在使用shell 脚本时希望获得命令行参数信息,就要使用位置参数变量
比如:./myshell.sh 111 222
其中111222 就是传入的命令行参数

用法

  • $n:n 为数字,$0 代表命令本身,$1-$9 代表 第一到第九个参数,十以上的参数需要用大括号,如${10}
  • $* :代表命令行中所有的参数,$*把所有的参数看成一个整体
  • $@:代表命令行中所有的参数,不过该命令是把每个参数区分对待
  • $#:代表命令行中所有参数的个数
    例一:编写一个脚本,并在脚本中获取命令行的参数信息
#!/bin/bash
echo "p0=$0,p1=$1,p2=$2"
echo "所有参数:$*"
echo "$@"
echo "参数数量:$#"

:<<! 结果
p0=./myshell.sh,p1=111,p2=222
所有参数:111 222
111 222
参数数量:2
!

预定义变量

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

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

案例
条件:一个存在的脚本 vr.sh,当前脚本preVar.sh
vr.sh 内容

#!/bin/bash
A=`date`
echo A=$A

preVer.sh 内容

#!/bin/bash
echo "当前进程号=$$"

#后台方式运行 vr.sh
./vr.sh &

echo "最后一个执行的进程的进程号=$!"
echo "执行的值=$?"

:<<! 结果
当前进程号=5682
最后的的进程号=5683
执行的值=0
[root@xq100 shellCode]# A=Mon Sep 5 21:44:57 CST 2022
!

新人,如有错误,望指出,谢谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值