变量赋值时不需要$符号,且=前后不能有空格
赋值时可以用=`命令`,将命令运行的结果值赋值过去,这里用到的是反引号
$0 $1 $2 - $9表示命令行的参数,并且可以通过shift将后面的参数移到前面来以获得更多参数
read可以读入参数,也可以通过重定向从文件读入,并且最后一个参数会把剩下所有内容读入,不够则为空串。IFS用于设置读取时候的分隔符。
$* 和$@是所有参数,不加双引号则单个单词,加双引号则前者把所有的处理成一个,后者把双引号引起来的处理成一个
$?是上一条命令的错误码。$PIPESTATUS是前一次管道中命令的返回值,是个数组,不能逐元素处理,否则会被上条命令覆盖,需要一次处理
可以通过unset或者将变量赋成空串来删除变量
因为使用未赋值变量时默认值为0,所以如果对变量拼写错误的话很难发现
$RANDOM返回随机数0-32767之间,但被赋值后失去作用
$SECONDS每过1秒加1,可中途赋值相当于重设时钟,但一旦被删除则功能消失,赋非整数相当于赋0
${FUNCNAME[i]}是当前所在函数名,且i从0开始变化,可以获得调用栈,类似的BASH_SOURCE是文件名,BASH_LINENO是行号
PWD当前工作目录,OLDPWD上一个工作目录。可用'pwd'获取当前目录,cd - 可以退回之前目录。HOME是用户主目录,也可以用~表示。
time可以获得用户模式和系统模式的调用时间以及总时间,同时可以通过TIMEFORMAT设置时间格式
$PPID,调用当前脚本的进程ID,$$自身的进程ID