Shell脚本基础知识与重定向与管道操作(3)

除了上述赋值操作以外,还可以使用bash的内置命令read来给变量赋值。read命令用来提示用户输入信息,从而实现简单的交互过程。执行时将从标准输入设备(键盘)读入一行内容,并以空格为分隔符,将读入的各字段依次赋值给指定的变量(多余的内容赋值给最后一个变量)。若指定的变量只有一个,则将整行内容赋值给此变量。

[root@centos01 ~]# read -p "输入需要的内容:" insert 输入需要的内容:您好! <!--将您好!赋值给变量insert--> [root@centos01 ~]# echo $insert 您好! 4)设置变量的作用范围

默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时,局部变量将无法再使用。例如,直接执行Bash进入一个新的子Shell脚本后,将无法引用父级Shell环境中定义的li、version等变量。

[root@centos01 ~]# echo "$li $version" <!--查看当前定义的变量值--> python 2.7.13 [root@centos01 ~]# bash <!--进入子shell环境--> [root@centos01 ~]# echo "$li $version" <!--无法调用父shell环境中的变量--> [root@centos01 ~]# exit <!--返回原有的shell环境--> exit [root@centos01 ~]# echo "$li $version" <!--查看当前定义的变量值--> [root@centos01 ~]# export li version <!--设置为全局变量--> [root@centos01 ~]# bash <!--进入子shell环境--> [root@centos01 ~]# echo "$li $version" <!--可以调用父shell的全局变量--> python 2.7.13 [root@centos01 ~]# exit <!--返回原有的shell环境--> exit 5)数值变量的运算

Shell变量的数值运算多用于脚本程序的过程控制(如循环次数、使用量比较等)再Bash shell环境中,只能进行简单的证书运算,不支持小数运算。整数值的运算主要通过内部命令expr进行,基本格式如下:

expr 变量1 运算符 变量2 [运算符 变量3]...

其中,变量1、变量2......对应为需要计算的数值变量(需要以“$”符号调用),常用的几种运算符如下所述
+:加法运算;
-:减法运算;
*:乘法运算;注意不能仅使用“*”符号,否则将被当成文件通配符;
/:除法运算;
%:求模运算,又称为取余运算,用来计算数值相除后的余数;

举个例子:

[root@centos01 ~]# x=35 [root@centos01 ~]# y=16 [root@centos01 ~]# expr $x + $y 51 [root@centos01 ~]# expr $x - $y 19 [root@centos01 ~]# expr $x \* $y 560 [root@centos01 ~]# expr $x / $y 2 [root@centos01 ~]# expr $x % $y 3 2、特殊的shell变量 1)环境变量:

使用命令“env”可以查看到当前工作环境下的环境变量。环境变量的值由Linux系统自动维护,会随着用户状态的改变而改变。
其中PATH变量用于设置可执行程序的默认搜索路径,如将root目录添加到默认搜索路径:PATH="$PATH:/root"如果找不到则会提示“command not found”

环境变量的全局配置文件为:/etc/profile,在此文件中定义的变量作用于所有用户。

用户独立配置未见位于:~/.bash_profile

修改变量文件后,须使用source命令重新读取加载或重启才会生效。

2)位置变量:

位置变量也称位置参数,在命令 “ls -lh /boot” 中,ls的位置变量为$0,-lh的位置变量为$1,/boot的位置变量为$2。以此类推。

3)预定义变量:

预定义变量是由bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义变量使用“$”符号和另一个符号组合表示,经常用的几个预定义变量含义如下:

$#:表示命令行中位置参数的个数。

$*:表示所有位置参数的内容。

$?:表示前一条命令执行后返回的状态,返回0表示执行正确,返回任何非0的数值表示执行出现异常。

$0:表示当前执行的脚本或程序的名称。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11644.html