Bash Shell编程----Shell中的变量

bash中的变量种类:

  • 本地变量:生效范围仅限当前shell进程,其子进程也无效。

  • 环境变量:生效范围是当前shell进程及其子进程

  • 局部变量:生效范围为当前shell进程中某代码片段(通常指函数)

  • 位置变量:$1,$2,$...,用户让脚本在脚本代码中调用命令行传给的参数。

    • 例,新建一个b.sh文件,内写a=$1 b=$2 echo $a echo $b,然后不加参数执行,什么都不会输出。

    • 这样,./b.sh x y 执行,会输出x和y,相当于把x赋给了a,把y赋给了b。

  • 特殊变量:$?,$0等等(见下方位置变量)

 

位置变量

  • 使用:$1,$2...分别对应传给脚本的第1,2...个参数。
  • 注:如果位数大于一需要使用{}包起来,例${10},不然shell会把它当做$1处理。
  • shift命令:他可以去掉传给脚本的参数。
    • 格式:shift n,n表示数字,n为几,就会去掉前几个参数,见代码:
b.sh:
    echo $1            //输出第一个参数tom
    shift 1               //去掉了第一个参数
    echo $1            //此时her就成了第一个参数,所以会输出her
[root@VM1 scripts]# ./b.sh tom her
tom
her

 

  • $0:命令本身
  • $*:传递给脚本的所有参数,加了引号之后,它会把所有的参数当做一个字符串处理
  • $@:传递给脚本的所有参数,加了引号之后,它把每个参数都当做单个字符串。
  • $#:传递给脚本的所有参数的个数
  • 还有$$(获取当前shell的进程号PID),$!(上一个命令的PID),$?(查看上一个命令的执行状态,0为成功,非0失败),$_(上个命令的最后一个参数)
 

变量的赋值、引用、销毁

  • 变量赋值:

    • 本地变量:

      • 直接字符串赋值:name="user1"

      • 变量引用:name="$变量名"

      • 命令引用:name=`命令`(注:反引号)或name=$(命令),会将命令的执行结果赋给变量

    • 环境变量:环境变量的定义即把定义好的本地变量导出为环境变量

      • export 变量

      • declare -x 变量

    • 只读变量:

      • 可以使用declare -r ,变量的格式将本地变量变成只读变量

      • 只读变量不能被修改,不能被销毁,随当前shell进程的销毁而销毁。

  • 变量引用:使用${name}的方式引用,一般情况{}可以省略,$后直接加变量名。

    • "":弱引用,其中的变量引用会被替换为变量值。

    • '':强引用,其中的变量引用不会被替换为变量值,而是保留原字符串。

    • 变量引用时也可以不加引号,默认是弱引用

[root@VM1 scripts]# a="num"

[root@VM1 scripts]# b=$a

[root@VM1 scripts]# c='$a'

[root@VM1 scripts]# d="$a"

[root@VM1 scripts]# echo $b

num

[root@VM1 scripts]# echo $c

$a

[root@VM1 scripts]# echo $d

num
  • 变量销毁:unset 变量名,使用set命令可以查看已定义的所有变量,使用export/env/printenv查看环境变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值