1. 定义变量
1.1 常用的系统变量
- $HOME 用户的主目录
- $PWD 当前目录
- $SHELL 执行的shell解释器的目录
- $USER 用户名
1.2 自定义变量
1.2.1 定义变量
变量名=变量值
注意:
- shell脚本语言 变量不需要指定类型。
- 等号两侧不可以有空格。
- 变量名的标识符规则和c语言一样。
- 默认的变量类型为字符串类型,不可以进行四则运算。
- 如果变量中有空格存在,则需要使用单引号或者双引号将变量值引起来。
1.2.2 撤销变量
unset 变量名
1.2.3 定义静态变量
readonly 变量名
注意:
- 静态变量不可以使用unset撤销。
- 静态变量不可以重新赋值
1.2.4 将变量提升为全局变量
export 变量名
注意:
- 将一个变量提升为全局变量后,其它的shell程序便可以使用该全局变量。
1.3 特殊变量
1.3.1 $n
其中n 代表的是数字。不同的数据具有特定的含义。
- 数字0 :表示当前执行的脚本文件的文件名
- 数字1 - xxx: 分别表示执行当前脚本时所输入的第1-xxx 个命令行参数
注意: 如果输入的命令行参数的个数大于10,那么从第10个起,在shell程序中使用该参数应该使用大括号扩起来 : 例如,${10}。
1.3.2 $#
$# 代表执行shell脚本时,输入的所有的命令行参数的个数。
1.3.3 $*
$* 代表输入的所有的命令行参数。 它将所有的命令行参数看做是一个整体。
1.3.4 $@
$* 也代表输入的所有的命令行参数。 它不将所有的命令行参数看做是一个整体,而是分别看待。
$* 和 $@ 的区别
- $*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 … $n的形式输出所有参数。
- 当它们被双引号“”包含时,“$ *”会将所有的参数作为一个整体,以“$1 $2 …$ n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数。
1.3.5 $?
$? 代表最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一
个命令正确执行;如果这个变量的值为非 0,则代表上一个命令没有正确执行。不同的数字代表不同的出错原因。
2. 运算符
- 方式一:“$((运算式))”
- 方式二:“$[运算式]”
- 方式三: expr + , - , *, /, % 加,减,乘,除,取余
注意:
expr 和运算符之间要有空格。
举栗子: