Shell学习笔记——变量

变量赋值时不需要$符号,且=前后不能有空格

赋值时可以用=`命令`,将命令运行的结果值赋值过去,这里用到的是反引号

$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

原文地址:https://www.cnblogs.com/unionfind/p/2932393.html