版权声明:原创文章,转载请附加链接。 https://blog.csdn.net/qq_36749611/article/details/87395024
shell变量及相关操作
shell环境变量
- HOME:用户主目录的全路径名
- PATH:变量PATH中定义了一些目录路径,路径由冒号分隔,执行命令时,会搜索这些目录,找到第一个命令执行。
- TERM:终端类型
- PWD:当前工作目录的绝对路径
- PS1:主提示符。root使用#,普通用户使用$
- PS2:辅助提示符。当用户输入\后,回车,或shell判断出命令未完成是按下回车键,将显示辅助提示符,可以在辅助提示符下继续输入命令。
- SHELL:定义shell解释器路径
- MAIL:定义信箱路径
- LOGNAME:登录用户的用户名
- UID:当前用户的UID
位置变量
- 位置变量是依据出现在命令行上的参数的位置来确定的变量
$命令 参数1 参数2 参数3 。。。
预定义的特殊变量
- $# :实际位置参数个数(不包括shell脚本名)
- $* :命令行中的所有位置参数组成的字符串
- $! :上一个命令对应的进程号
- $? :表示最近一条命令执行后的退出状态(返回值,十进制)
- $$ :当前进程号PID
用户自定义变量
- 变量名区分大小写,开头以字母或下划线开头,后面是任意数量的字母,数字,下划线
- 为了使变量名与命令名区分,建议所有变量名用大写字母表示
变量操作
- 创建和设置变量
- 使用内置命令declare或typeset创建变量,可以通过命令参数设置创建方式,如:declare -r 创建只读变量。
- 直接赋值变量名(为变量赋值时,变量名前不应加$,=后不能有空格)
- 包含空格的变量,整个字符串使用双引号括起来
- 可以使用{}来区别变量与其他字符,如:this is ${order}th 。(order=20)
- 使用unset 删除变量
- 变量赋值
- 直接赋值,赋值时不应添加美元$,且等号前后不能有空格个
- 使用read命令赋值(read 变量1 变量2 …)
当shell执行到read命令时,将暂停执行,等待键盘输入,赋值完成后继续执行
规则如下:- 多个数据或变量之间用空格隔开
- 若变量个数与数据个数相等,则对应赋值
- 若变量个数大于输入数据个数,则没有输入数据的变量取空值
- 若变量个数小于输入数据个数,则多余的值全部赋给最后一个变量
- 可以通过命令行参数对应位置变量赋值
- 可以将命令执行结果赋值给变量,使用(
)表示引用命令
- 使用while循环读入是数据实现赋值
- 变量输出
- printf命令,类似c语言
- echo命令,直接输出变量
- 数组变量
- 数组的使用类似C语言数组
- 数组中@符号含义是把原数组的内容复制到一个新数组中,生成的新数组和原来一样
- 数组中@符号含义是把原数组中的所有元素,(除分隔符外)当成一个元素复制到新数组中,生成的新数组只有一个元素
- 获得元素个数{# demo[* ]}
- 获得数组元素长度{# demo[num]}