Shell脚本的应用2(基础)
简介:这篇文档为shell脚本变量的应用,详细讲解了自定义变量
上篇文档的链接地址:Linux Shell脚本的应用(基础),也是shell脚本的基础内容,可以通过链接地址查看。
使用shell变量
shell变量的定义:用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。
变量的作用:
变量名——使用固定的名称,由系统预设或用户定义
变量值——能够根据用户设置、系统环境的变化而变化
从而使shell程序更加灵活方便、适应性更强
常见的shell变量类型:
- 自定义变量:由用户自己定义、修改和使用
- 环境变量:由系统维护,用于设置工作环境
- 位置变量:通过命令行给脚本程序传递参数
- 预定义变量:Bash中内置的一类变量,不能直接修改
自定义变量
自定义变量:由系统用户自己定义的变量,只在用户自己的shell环境中有效,因此又称为本地变量。
在编写shell脚本程序时,通常会设置一些特定的自定义变量,以适应程序执行过程中的各种变化,满足不同的需要。
1.定义新的变量
Bash中的变量操作相对比较简单,不像其他高级编程语言(如C++、Java等)那么复杂。在定义一个新的变量时,一般不需要提前进行声明,而是直接指定变量名称并赋予初始值(内容)即可。
定义变量的基本格式:变量名=变量值
注:等号两边没用空格;变量名称需以字母或下划线开头,且区分大小写。
如下图:定义一个名为”Product”的变量(值为Python)和一个名为”Version”的变量(值为2.7)
2.查看和引用变量的值
引用变量的值:在变量名称前添加前导符号”$”
查看变量:使用echo命令查看,可以在一条echo命令中查看多个变量值
注:当变量名称容易和紧跟其后的其他字符相混淆时,需要添加大括号”{ }”将其括起来,否则将无法确定正确的变量名称。对于未定义的变量,将显示为空值。如下图:
3.变量赋值的特殊操作
1)双引号(”)
双引号作用一:
起界定字符串的作用,特别是当要赋值的内容中包含空格时,必须要以双引号括起来,否则会赋值失败,其他情况下双引号可以省略。如下图:
双引号作用二:
引用其他变量的值(变量引用)
如下图:
2)单引号(’)
当要赋值的内容中包含”$”或”””或”\”等具有特殊含义的字符时,使用单引号括起来后,将无法引用其他变量的值,任何字符均作为普通字符看待,说白了就是:禁止引用其他变量值,$视为普通字符。但赋值内容中包含单引号是,需要使用”\”符号进行转义,以免冲突。如下图:
3)反撇号(`)
用于命令替换,允许将某个命令的输出结果赋值给变量。需要注意的是,反撇号括起来的范围内必须是能够被执行的命令,否则会出错。
如下图:
上述操作相当于连续执行了两条命令——即先通过which cd 命令查找出cd命令的绝对路径,然后根据查找结果列出文件属性。
示例:
还有一个需要注意的是,使用反撇号难以在一行命令中实现嵌套命令替换操作时,可以使用”$()”来代替反撇号。
4)read命令
read命令是bash的内置命令,可以用来提示用户输入信息,从而实现简单的交互过程。即从键盘输入内容为变量赋值。
为了使交互式操作的界面更加友好,提高易用性,read命令可以结合”-p”选项来设置提示信息,以便告知用户应该输入什么内容等相关事项。
示例:若希望用户输入备份文件的存放目录,并将用户输入的路径信息赋值给变量BakDir,可以执行以下操作。如下图:
4.设置变量的作用范围
默认情况下,新定义的变量只在当前的shell环境中有效,因此成为局部变量。当进入子程序或新的shell环境时,局部变量将无法再使用。如下图:
为了使用户定义的变量在所有的子shell环境中都能够继续使用,减少重复设置的工作,可以通过内部命令export将指定的变量导出为全局变量。用户可以同时指定多个变量名称作为参数(无须使用$符号),变量名之间以空格分隔。如下图:
5.数值变量的运算
Shell变量的运算多用于脚本的过程控制(如循环次数、使用量比较等,这里不做详细介绍)。在Bash shell环境中,只能进行简单的整数运算,不支持小数运算。整数的运算主要通过内部命令expr进行。
运算格式:expr 变量1 运算符 变量2 [运算符 变量3]…
注:预算符与变量之间必须有至少一个空格。
常用的几种运算符:
- +:加法运算
- -:减法运算
- \*:乘法运算,注意不能仅适用”*”符号,否则将被当成文件统配符
- /:除法运算
- %:求模运算 ,又称取余运算,用来计算数值相除后的余数
示例:设置x的值为12,y的值为15,依次演示x、y的加、减、乘、除、取模运算。如下图:
以上所有内容为自定义变量的应用,常见的shell变量类型包括自定义变量、环境变量、位置变量、预定义变量四种,剩下的三种比较特殊,下篇文档我们再一起详细了解。
转载请注明:七维网络 » Linux Shell脚本的应用(基础)二