Linux Shell变量
变量分类
- 系统变量(\(HOME,\)PWD,\(SHELL,\)USER...)
- 显示所有系统变量
set
- 显示所有系统变量
- 用户自定义变量
定义变量
基本语法
- 声明变量: 变量=值
- 撤销变量: unset 变量
- 声明静态变量: readonly 变量
- 静态变量不能unset
定义规则
- 可有字母、数字、下划线组成,但不能以数字开头
- 声明变量的时候 变量=值, 等号两边不能有空格
- 变量名称一般习惯大写
- 如果要将指令返回值赋给变量
- A='date'【是反引号,不是单引号!】
- A=$(date)
举例
注:ehco后添加的内容会直接以文本形式输出, 而遇到$
时会将对应内容识别为变量,转而输出变量内容。
设置环境变量
为什么需要设置环境变量
环境变量相当于全局变量,按上文的方式在一个shellA定义的变量在shellB将不起作用。而如果定义一个环境变量,那么它无论是在shellA还是在shellB中都能起作用
如何设置
- 在/etc/profile中添加环境变量
- 添加语法 :
export 变量名=变量值
【等号两边同样不能有空格】 - 执行
source /etc/profile
使配置文件生效
举例:添加环境变量TOMCAT_HOME
位置参数变量
介绍
- 当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
- 比如:./myshell.sh 100 200,这个就是一个执行shell的命令行,100,200是传入的参数
- 类比c语言中的scanf()
基本语法
- $n(功能描述:n为数字,$0代表命令本身,$1-\(9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如\){10})
- \(* (功能描述:这个变量代表命令行中所有的参数,\)*把所有的参数看成一个整体)
- \(@(功能描述:这个变量也代表命令行中所有的参数,不过\)@把每个参数区分对待)
- $#(功能描述:这个变量代表命令行中所有参数的个数)
举例
预定义变量
基本介绍
shell设计者实现定义好的变量,可以在shell脚本中直接使用
基本语法
-
\[(功能描述:当前脚本的进程的进程号(PID)) \]
- $?(功能描述︰1.最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确了。2.用来获取函数的返回值)