1、bash的内置变量
$PATH 环境变量路径
$HOSTNAME 系统主机名
$UID 系统当前用户ID
$HISTFILE 历史文件存放路径
$HISTSIZE 系统可以保存的历史记录条目数
$HISTFILESIZE 历史文件可以保存的历史记录条目数
$HISTCONTROL 历史命令显示控制
$BASH bash二进制程序文件的路径
$BASH_SUBSHELL 子shell的层次
$BASH_VERSION shell版本
$EDITOR 系统默认编辑器
$EUID 有效的用户ID
$UID 用户的ID号
$FUNCNAME 当前函数的名称
$GROUPS 当前用户所属的组
$HOME 当前用户的家目录
$HOSTTYPE 主机类型,用来识别系统硬件是32位还是64位
$MACHTYPE 平台类型
$OSTYPEOS 类型
$OLDPWD 上次所在路径
$PWD 当前路径
$IFS 输入数据时字段分隔符,默认为空白符(空格、制表符、换行符)
$PPID 父进程ID
$PS1 主提示符
$PS2 第二提示符,补充完全命令输入时的提示符
$PS3 第三提示符,用于select命令中
$PS4 第四提示符,当使用-x选项调用脚本时,显示的提示符,默认为+号
$SECONDS 当前脚本已经运行的时长
$SHLVL shell级别,bash被嵌入的深度
2、特殊变量
$0 脚本名称自身
$1, $2, ... 位置参数
$# 命令行参数个数
$* 所有的参数,被当作一个字符串
$@ 所有的参数,每个参数都是一个独立的字符串
$! 运行于后台的最后一个作业的PID
$_ 上一条命令的最后一个参数的值
$? 上一条命令状态返回值
$$ 脚本自身的PID
3、操作字符串
${variable}: 变量引用
${varible:-default}:如果variable没有声明或者为空,则返回default字串,否则返回variable自身的值
${varible:+default}:如果variable没有声明或者为空,则返回空字串,否则返回default
${varible:=default}:如果variable没有声明或者为空,则返回default字串,并且将default赋值给variable,否则返回variable自身值
${varible:?default}:如果variable没有声明或者为空,则以default为错误信息返回,否则返回variable自身的值
${#variable}: 返回变量中字符串的长度
子串消除:
${varilable#*pattern}: 查找variable中自左而右第一次被pattern匹配到的串,将此串及向左的所有内容都删除
${varilable##*pattern}: 查找variable中自左而右最后一次被pattern匹配到的串,将此串及向左的所有内容都删除
${varilable%pattern*}: 查找variable中自右而左第一次被pattern匹配到的串,将此串及向右的所有内容都删除
${varilable%%pattern*}: 查找variable中自右而左最后一次被pattern匹配到的串,将此串及向右的所有内容都删除
取子串:
${variable:pos}: 取从pos+1开始往后的所有字符
${variable:pos:num}: 取从post+1开始往后的num个字符
子串替换
${variable/Pattern/Replacement}: 以Pattern为模块匹配variable中的字串,将第一次匹配到的内容替换为Replacement
${variable//Pattern/Replacement}:以Pattern为模块匹配variable中的字串,将匹配到的内容全部替换为Replacement
4、声明变量:
declare
-i: 整型
-a: 数组
-x: 环境变量
-r: 只读变量,相当于readonly
-f: 声明函数