Shell变量类型主要有:环境变量,位置变量,预定义的特殊变量以及用户自定义变量等。
(一)环境变量
环境变量时用来设置系统运行环境的变量。环境变量的名称由大写字母组成,常用的如下:
名称 |
说明 |
HOME |
用户主目录的全路径名 |
PATH |
定义了一些目录路径,用冒号(:)隔开。 |
TERM |
显示当前终端的类型 |
PWD |
显示当前工作路径的绝对路径 |
PS1 |
主提示符 |
PS2 |
辅助提示符 |
SHELL |
Shell的解释器路径 |
|
当前邮箱的路径 |
LOGNAME |
登陆用户的用户名 |
UID |
当前用户的id |
添加新路径可以用
$PATH=$PATH:路径名
例,
(二)位置参数
根据出现在命令行上的参数来确定变量值,其中,$0代表当前执行的命令名或者是shell文件的文件名,$1,$2,$3,$4,$5,$6,$7,$8,$9分别代表第一个参数,当命令行中的参数多于9个时,使用shift命令来左移,
例,zzz文件内容
zzz文件内容 #! /bin/bash Echo $0,$1,$2输入参数为num1和test,输出$0当前执行命令名,$1赋值为num1,$1赋值为test:
#! /bin/bash Echo $0,$1,$2 #! /bin/bash Echo $0,$1,$2,$3,$4,$5,$6,$7,$8,$9 Shift Echo $0,$1,$2,$3,$4,$5,$6,$7,$8,$9 Shift 3 Echo $0,$1,$2,$3,$4,$5,$6,$7,$8,$9
(三)变量的操作
1. 用declare来申明变量
2. 用typeset来申明变量
3. 直接用变量名=变量值来定义变量(这个是最常用的)要是变量值有空格,用双引号就可以了
(四)变量赋值
Read命令是一个内置命令,从输入设备或者是一个文件读取数据。Read命令读取一个输入行直到遇到一个换行符为止。规则如下:
1. 多个变量之间用空格隔开
2. 若变量个数与数据个数相等,则对应赋值。
3. 若变量个数大于输入数据个数,则后面的变量赋值为空
4. 若变量个数小于输入数据个数,则多余的数据都赋值为最后一个变量。
(五)变量输出端:
echo可以输出字符串也可以输出变量,例,
命令格式说明:
- \”:双引号
- \\:反斜杠
- \n:回车
- \r:换行
- %%:百分号
- %d:数字
- %f:浮点数
- %s:字符
例,
%-20s表示左对齐,20个字符宽度,%20.4f表示是右对齐,20个字符,4位小数
(六)数组:
数组是一组数值的集合。
name=(element1,element2.。。。)
或者是name[index]=element
${name[index]}
${#name[*]}
*和@都是提取整个数组元素
不同的是@是把原数组的内容复制到一个新数组中,生成的新数组和以前的数组是一样的,符号*是把原来的数组中所有的元素作为新数组的一个元素
all=(“$name[*]”)
list=(“${name[@]}”)
${#name[i]}
(七)算术运算
Expr命令:可以进行简单的整数运算,+,-,*,\,%,运算符,命令要用反引号
Let命令:与expr可以换用,不过let命令中不用加$符号
浮点数运算可以bc和awk运算
例,