2.Shell变量
Shell变量
linux系统变量
#通过命令获取shell变量
set
自定义变量
-
基本语法
- 定义变量:变量=值
- 撤销变量:unset 变量
- 声明静态变量:readonly变量,注意:不能unset
-
命名规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
- 等号两侧不能有空格
- 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
- 变量的值如果有空格,需要使用双引号或单引号括起来。
-
Demo
#定义变量A,当重新执行A=6时,则会覆盖原值 A=5 #输出 echo $A #删除变量 unset A #声明静态的变量B=2,不能unset readonly B=2 #变量默认类型都是字符串类型,无法直接进行数值运算 C=1+2 echo $C #会输出1+2 #变量的值如果有空格,需要使用双引号或单引号括起来 D="Hello Word" #可把变量D提升为全局环境变量,可供其他Shell程序使用 export D
其他变量
$n
- 基本语法
功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}
-
Demo
输出该脚本文件名称、输入参数1和输入参数2 的值
#创建 touch parameter.sh #编辑 vim parameter.sh #获取 #!/bin/bash echo "$0 $1 $2" #执行 ./parameter.sh p1 p2 #输出 parameter.sh p1 p2
$#
-
基本语法
功能描述:获取所有输入参数个数,常用于循环。
-
Demo
获得参数数量
vim parameter.sh #!/bin/bash echo "$0 $1 $2" #新增如下 echo $# #执行 sh parameter.sh p1 p2 #输出 parameter.sh p1 p2 2#有P2 P2两个参数
$* | $@
-
基本语法
- $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
- $@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
两者区别见此处
-
Demo
vim parameter.sh #!/bin/bash echo "$0 $1 $2" echo $# #新增如下 echo $* echo $@ #执行 sh parameter.sh p1 p2 #输出 parameter.sh p1 p2 2#有P2 P2两个参数 p1 p2 p1 p2
$?
-
基本语法
功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
-
Demo
#执行一个正确的变量命名的命令 A=1 #执行 $? #输出 0 #说明上一次执行成功 #执行一个错误的变量命名的命令 A = 1 #带空格 #执行 $? #输出 !0 #说明上一次执行失败