export,readonly
export 用于修改或打印环境变量
- export name[=word] 修改环境变量 export PATH=$PATH:/home/bin
- export -p 打印出环境变量的名称与值
readonly 使变量不能修改
- readonly name[=word] readonly a=hello 是的a变量不能被修改
- readonly -p 打印出所有只读变量的名称与值
env,unset
env 临时改变环境变量的值
- env -i 初始化环境变量,丢弃任何继承值,仅传递命令上指定的环境变量给程序使用
unset 从执行的shell中删除变量与函数
- unset demo 删除变量demo
- unset -v hello 删除除了hello以外的变量
- unset -f test 删除函数test
shell运算符
${varname:-word}
- 如果varname存在且不为null,则返回vaname的值,否则返回word
${varname:=word}
- 如果varname存在且不为null,则返回vaname的值,否则设置它为word并返回
${varname:?message}
- 如果varname存在且不为null,则返回vaname的值,否则设置显示varname:message,并退出当前命令或脚本
${varname:+word}
- 如果varname存在且不为null,则返回word,否则返回null
${varname#pattern}
- 如果模式匹配于变量值的开头处,则删除匹配的最短部分,并返回剩下部分
${varname##pattern}
- 如果模式匹配位于变量值的结尾处,则删除匹配的最短部分,并返回剩下的部分
${varname%pattern}
- 如果模式匹配位于变量的结尾处,则删除匹配的最长部分,并返回剩下的部分
${varname%%pattern}
- 如果模式匹配位于变量值的结尾处,则删除匹配的最长部分,并返回剩下的部分
shell变量
$#
- 提供给shell脚本或函数的参数的总数
$*,$@
- 一次表示所有的命令行参数
“$*”
- 将所有的命令行参数视为单个字符串,等同于”$1 $2”
“$@”
- 将所有的命令行参数视为单独的个体,也就是单独字符串,等同于”$1”,”$2”
$0
- 获取当前执行shell的脚本文件名,如果执行脚本带路径那么就包括脚本路径
$n
- 获取当前执行shell脚本的第n个参数,n=1..9,当n为0时表示脚本文件名,如果n大于9,需要使用大括号括起来${10}
$$
- 获取当前shell的进程号
$!
- 执行上一个指令的PID
$?
- 获取执行上一个指令的返回值(0为成功,非0为失败)
$_
- 在此之前执行的命令或脚本的最后一个参数
特殊变量
#
- 目前进程的参数个数
@
- 传递给当前进程的命令行参数
*
- 当前进程的命令行参数
-
- 在引用时给予shell的选项
?
- 前一命令的推出状态
$
- shell进程的进程编号
0
- shell程序的名称
!
- 最近一个后台命令的进程编号
ENV
- $ENV的值是可展开参数。仅用于交互式shell中
HOME
- 根目录
IFS
- 内部的字段分割器
LANG
- 当前locale的默认名称
LC_ALL
- 当前locale的名称
LC_COLLATE
- 用来排序字符的当前locale名称
LC_CTYPE
- 在模式匹配期间,用来确定字符类别的当前locale的名称
LC_MESSAGES
- 输出信息的当前语言的名称
LINENO
- 刚执行过的行在脚本或函数内的行编号
NLSPATH
- 在$LC_MESSAGES(XSI)所给定的信息语言里,信息目录位置
PATH
- 命令的查找路径
PPID
- 父进程的进程编号
PS1
- 主要的命令提示字符串。默认为”$”
PS2
- 行继续的提示字符串。默认为”>”
PS4
- 以set -x设置的执行跟踪的提示字符串。默认位”+”
PWD
- 当前工作目录
shell内置变量
* 可以使用man cd查看
alias,unalias
- 定义别名,删除别名
bg,fg,jobs,kill
- 用于工作控制,它是一个操作系统工具,可将工作移动到后台执行,或由后台执行中移出
fc
- 管理shell之前已存储的执行过的命令历史,允许交互式用户再次调用之前用过的命令,编辑它以及再重新执行它
times
- 打印由shell及所有子进程所累积执行迄今的cpu时间
umask
- 用来设置文件监理师的权限掩码
PIPESTATUS
- 存储上次运行的管道或命令的退出状态的数组
REPLY
- read命令没有提供变量情况下的默认变量
SECOND
- 返回shell运行的秒数
TMOUT
- 用于内置命令:read,select,或者交互式bash shell.如果TMOUT数值为证,则使用它的前面3个命令在$TMOUT秒之后超时.如果等于0或者为负数,则将其忽略
*