Linux操作系统 Shel脚本编程 Shell变量 1
1 Linux 操作系统 Shell 脚本编程 Shell 变量
主要内容和学习要求 口she11变量的设置、查看和清除 口局部变量与作用域 口环境变量及其设置 ▣内置命令declare和printf 口变量测试与赋值 ▣位置变量与变量的间接引用 口命令替换的两种方式 口整型变量的算术运算和算术扩展 口数组变量及其引用方法
2 主要内容和学习要求 shell 变量的设置、查看和清除 局部变量与作用域 环境变量及其设置 内置命令 declare 和 printf 变量测试与赋值 位置变量与变量的间接引用 命令替换的两种方式 整型变量的算术运算和算术扩展 数组变量及其引用方法
变量 口变量命名 ●变量名必须以字母或下划线开头,后面可以跟字母、数字 或下划线。任何其它字符都标志变量名的结束。 ●变量名关于大小写敏感。 口变量类型: ●根据变量的作用域,变量可以分为局部变量和环境变量 ●局部变量只在创建它们的she11中可用。而环境变量则 在所有用户进程中可用,通常也称为全局变量。 口变量赋值: variable=value ●等号两边不能有空格 ●如果要给变量赋空值,可以在等号后面跟一个换行符
3 变量赋值: z 等号两边不能有空格 z 如果要给变量赋空值,可以在等号后面跟一个换行符 variable=value 变 量 变量命名 z 变量名必须以字母或下划线开头,后面可以跟字母、数字 或下划线。任何其它字符都标志变量名的结束。 z 变量名关于大小写敏感。 变量类型: z 根据变量的作用域,变量可以分为局部变量和环境变量 z 局部变量只在创建它们的 shell 中可用。而环境变量则 在所有用户进程中可用,通常也称为全局变量
变量 口显示变量的值 echo Svariable 或 echo $(variable} ▣ 清除变量 unset variable 口显示所有变量 set 例: myname=jypan echo $myname unset myname echo $myname
4 显示变量的值 echo $variable 或 echo ${variable} 清除变量 unset variable 显示所有变量 set 例:myname=jypan echo $myname unset myname echo $myname 变 量
变量举例 [jypan@qtm213 ~]9 round=world [jypan@qtm213 ~]echo $round [jypan@qtm213 ~]9 name=Peter Piper [jypan@qtm213 ~]9 name="Peter piper" [jypan@qtm213 ~]9 echo Sname [jypan@qtm213 ~]9 x- [jypan@qtm213 ~]9 echo $x [jypan@qtm213 ~file.bak="gHOME/junk
5 变量举例
局部变量和作用域 口变量的作用域 是指变量在一个程序中那些地方可见。对于she11来 说,局部变量的作用域限定在创建它们的shel1中。 例: [jypan@qtm213 ~]echo $$ $是特殊变量, 5617 用来存储当前 [jypan@qtm213 ~]round=world 运行进程的PID [jypan@qtm213 ~]echo Sround [jypan@qtm213 ~]bash [jypan@qtm213 ~]echo $s 5751 [jypan@qtm213 ~]echo Sround [jypan@qtm213 ~]exit 6
6 例: $ 是特殊变量, 用来存储当前 运行进程的PID 局部变量和作用域 变量的作用域 是指变量在一个程序中那些地方可见。对于 shell 来 说,局部变量的作用域限定在创建它们的 shell 中
只读变量 口只读变量 是指不能被清除或重新赋值的变量。 readonly variable 例: [jypan@qtm213 ~]myname=jypan [jypan@qtm213 ~]readonly myname [jypan@qtm213 ~]unset myname bash:unset:myname:cannot unset:readonly variable [jypan@qtm213 ~]myname="Jianyu Pan" bash:myname:readonly variable
7 例: 只读变量 只读变量 readonly variable 是指不能被清除或重新赋值的变量
环境变量 ▣ 环境变量 ●作用域包含创建它们的shel1,以及从该shel1产生的 任意子shel1或进程。 ●按照惯例,环境变量通常使用大写。 ●环境变量是已经用export内置命令输出的变量。 口变量被创建时所处的shel1称为父she11。如果在父 shel1中启动一个新的shel1(或进程),则该she11(或 进程)被称为子she11(或子进程)。 ●环境变量就象DNA,可以从父亲传递给儿子,再到孙子, 但不能从子进程传递给父进程。 8
8 变量被创建时所处的 shell 称为父 shell。如果在父 shell 中启动一个新的 shell(或进程),则该 shell ( 或 进程 ) 被称为子shell ( 或子进程 )。 环境变量 环境变量 z 作用域包含创建它们的 shell,以及从该 shell 产生的 任意子 shell 或进程。 z 按照惯例,环境变量通常使用大写。 z 环境变量是已经用 export 内置命令输出的变量。 z 环境变量就象 DNA,可以从父亲传递给儿子,再到孙子, 但不能从子进程传递给父进程
环境变量举例 设置环境变量 export variable=value variable=value;export variable 例: [jypan@fish213 ~]echo $s [jypan@fish213 ~]9 export round=world [jypan@fish213 ~]9 bash [jypan@fish213 ~]echo $s 15175 [jypan@fish213 ~]echo Sround export -n variable 将全局变量转换成局部变量 列出所有全局变量 export -p
9 环境变量举例 export variable=value 设置环境变量 variable=value; export variable 例: export -n variable export -p 将全局变量转换成局部变量 列出所有全局变量
内置命令declare 口内置命令declare可用来创建变量。 declare [选项]variable=value declare常用选项 选项 含义 -r 将变量设为只读(readonly) -x 将变量输出到子shell中(export为全局变量) -1 将变量设为整型(integer) -a 将变量设置为一个数组(ar吵) -f 列出函数的名字和定义(function) -E 只列出函数名 10
10 内置命令 declare 可用来创建变量。 declare [选项] variable=value declare 常用选项 -f 列出函数的名字和定义 ( function ) 选项 含义 -r 将变量设为只读 ( readonly ) -x 将变量输出到子 shell 中(export 为全局变量) -i 将变量设为整型 ( integer ) -a 将变量设置为一个数组 ( array ) -F 只列出函数名 内置命令 declare