1、shell变量是弱变量,即该变量不需要定义就能使用。
a是变量
$a是变量的值
2、位置参数变量
位置参数:$0表示命令本身 ; $1表示第一个参数; $2表示第二个参数;
以此类推到$9,共十个。
3、进程变量
$# 表示传递给shiell命令文件的参数个数(不包含命令文件本身)
如:$ test a b c
$ echo $#
$ 3
$? 表示执行命令的退出状态,其值为0,1等。正常退出为0,异常退出为非0、
$$ 变量的值为当前进程的进程号
$* 该变量的值为命令行的所有变元
$! 在后台运行的最后一个进程的进程号
$- 变量的值为shell中当前设置的个执行标志之名称组成的串
4、标准的shell变量
ENV 保存用来初启新shell的文件名 FCEDIT 保存fc命令的默认的编辑器名字 HOME 保存当前用户的主目录 LINENO 保存当前脚本或函数的当前序列号,在脚本和函数的上下文以外其值没有意义 MAIL 保存shell查看新邮件的文件名 MAILCHECK 保存两次信箱查看之间的秒数 OLDPWD 保存先前由cd命令设置的工作目录 OPTARG 保存getopts命令最近处理的可选参数的值 PATH 保存命令搜索路径 PPID 父进程的ID号 PS1 Shell的主提示符 PS2 Shell的次提示符 PS3 保存select命令的提示符 PWD 当前工作目录 RANDOM 每次它使用时都保存一个随机数 SECONDS 保存当前shell实例被启动以来经历的时间,如给SECONDS赋值,则SECONDS为赋的值家经历的时间 TMOUT 显示主提示符之后等待输入的秒数,如在指定时间没输入则shell终止
5、变量的作用空间
在shell脚本中定义的变量尽在脚本中有效,但使用如下的一些命令可以改变其作用域或属性:
export [option] [name[=value]]
-- 表示选项结束,所有后续参数都是实参
-f 表明在“名-值”对中的名字是函数名
-n 把全局变量转换成局部变量,即命名的变量不在传给子shell
-p 显示全局变量列表(全局变量,即在子shell中也有效的变量)
缺省 把变量定义为全局变量