1.用户定义的变量 用户定义的变量有字母数字及下划线组成,并且变量名的第一个字符不能为数字. 与其它UNIX名字一样,变量名是大小写敏感的. 对于变量,用户可按如下方式赋值: name=value 在引用变量时,需在前面加$符号,用户也可以在变量间进行相互赋值,如: (前面的$是命令提示符)
$JOHN=john $NAME=$JOHN $echoHello$NAME Hellojohn
也可以用变量和其他字符组成新的字,这时可能需要把变量用{}括起,如:
$SAT=Satur $echoTodayis${SAT}day TodayisSaturday
对于未赋值的变量,Bash以空值对待,用户也可以用unset命令清除给变量 赋的值.
Bash中还可以使用数组变量,其赋值有两种:
(1)name[index]=value (2)name=(value1...valuen)此时下标从0开始
数组下标的范围没有任何限制,同时也不必使用连续的分量.
Bash中关于变量的内建命令有:
(1)declare和typeset.两者具有一样的功能.其选项有: [-/ ]a设置/撤消变量的数组属性 [-/ ]i设置/撤消变量的整数属性 [-/ ]r设置/撤消变量的只读属性 [-/ ]x设置/撤消变量的输出属性 -pvar显示变量属性 (2)export和local. export把变量输出到环境中,用法为: exportname exportname=value
这里需要简单介绍一下export的作用:当Bashshell执行一个 程序时,将首先为该程序建立一个新的执行环境,称为子shell, 在BashShell中变量都是局部的,即它们只是在创建它们的子 Shell中是有意义的,使用export后,变量被设置为全局变量,这 时可以被其它子Shell所识别
local标记变量为局部的(如只能被函数内部使用),用法为: localname localname=value (3)readonly. 指定变量为只读,执行后,改变量不能被再次赋值,用法为: readonlyname
2.位置变量或Shell参数 BashShell在解释用户命令时,将把命令行的第一个子作为命令,而其它字作为 参数通过位置变量传递给程序.$1,...,$9分别代表第一,...,九个参数.其中1-9 是真正的参数名,"$"符只是用来标识变量的替换. 位置变量$0指命令对应的可执行名. 其它的还有: $#送给命令的参数个数 $@所有的参数,每个用双括号括起 $*所有的参数,用双括号括起 3.与Shell有关的变量 (1)Shell自身设置的一些常用变量: LINENO正在执行的命令在脚本中的行号 PWD用户当前目录的全名 OLDPWD最近一次执行cd之前,用户当前目录的全名 PPID父进程ID $当前进程ID RANDOM随机数(范围0-32767) SECONDSBashShell的运行时间,单位是秒 REPLYselect和read命令使用,以后会讲到 OPTARG ORTIND这两个变量由getopt命令设置 UID当前用户的UserID _上一条命令使用的最后一个参数 (2)影响Shell行为的一些常用环境变量: PATH命令搜索路径,以冒号为分隔符.注意与DOS下不同的是, 当前目录不在系统路径里 HOME用户home目录的路径名,是cd命令的默认参数 COLUMNS定义了命令编辑模式下可使用命令行的长度 EDITOR默认的行编辑器 VISUAL默认的可视编辑器 FCEDIT命令fc使用的编辑器 HISTFILE命令历史文件 HISTSIZE命令历史文件中最多可包含的命令条数 HISTFILESIZE命令历史文件中包含的最大行数 IFS定义SHELL使用的分隔符 LOGNAME用户登录名 MAIL指向一个需要SHELL监视其修改时间的文件.当该文件修改后, SHELL将发消息Youhavamail给用户 MAILCHECKSHELL检查MAIL文件的周期,单位是秒 MAILPATH功能与MAIL类似.但可以用一组文件,以冒号分隔,每个文件后 可跟一个问号和一条发向用户的消息 SHELLSHELL的路径名 TERM终端类型 TMOUTSHELL自动退出的时间,单位为秒,若设为0则禁止SHELL自动退出 PROMPT_COMMAND指定在主命令提示符前应执行的命令 PS1主命令提示符 PS2二级命令提示符,命令执行过程中要求输入数据时用 PS3select的命令提示符 PS4调试命令提示符 MANPATH寻找手册页的路径,以冒号分隔 LD_LIBRARY_PATH寻找库的路径,以冒号分隔 | | | |