shell-变量

shell-变量

丁起男 91 2022-09-21

shell-变量

系统预定义变量

如:HOMEHOME、PWD、SHELLSHELL、USER等就是系统预定义变量

查看系统变量的值

echo $变量名
printenv 变量名

当前shell中所有系统全局变量

env
printenv

查看所有变量(包括自定义)

set

用户自定义变量

语法

  • 定义变量:变量名=变量值,注意:=号前后不能有空格
  • 撤销变量:unset 变量名
  • 声明静态变量(只读变量):readonly 变量名,注意:不能unset
  • 用户变量变系统变量:export 变量名,注意:如果在子shell中改变了这个变量的值,父shell感知不到

规则

  • 变量名可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议全大写

  • 等号两侧不能有空格

  • 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算,如果需要计算可以使用:

    • $((运算式))
    • $[运算式]
    • expr 运算式,注意:这种方式符号和数字必须有空格,并且*号需要转义
  • 变量的值如果有空格,需要使用双引号或单引号括起来

特殊变量

$n

n为数字,$0代表脚本名称(执行命令时使用的路径),$1-9代表第一到第九个参数,十以上的参数,需要大括号包含,如9代表第一到第九个参数,十以上的参数,需要大括号包含,如

可以使用shift 命令修改除0以为的其他参数的偏移量

$#

获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性

$*

这个变量代表命令行中所有的参数(会把所有参数看成一个整体,相当于一个大字符串)

$@

这个变量代表命令行中所有参数(会把每个参数区分对待,相当于一个集合数字,可以用作遍历)

$?

最后一次执行的命令的返回状态。如果这个遍历的值为0,证明上一个命令正确执行;如果整个变量的值为非0(具体数字自己决定),则证明上一个命令执行不正确

$$

shell本身的pid

$!

shell最后运行的后台pid

$-

显示shell使用的当前选项,与set命令功能相同