目录
本章结构
一、理论部分
1.1shell变量的作用、类型
v变量的作用
§为灵活管理Linux系统提供特定参数,有两层意思:
• 变量名:使用固定的名称,由系统预设或用户定义
• 变量值:能够根据用户设置、系统环境的变化而变化
v变量的类型
§自定义变量:由用户自己定义、修改和使用
§环境变量:由系统维护,用于设置工作环境
§位置变量:通过命令行给脚本程序传递参数
§预定义变量:Bash中内置的一类变量,不能直接修改
二、实践部分
2.1自定义变量
v定义一个新的变量
§格式:变量名=变量值
§变量名以字母或下划线开头,区分大小写,建议全大写
v查看变量的值
§格式:echo $变量名
[root@localhost ~]# Product=PPT
[root@localhost ~]# Version=3.0
[root@localhost ~]# echo $Product
PPT
[root@localhost ~]# echo $Product $Version
PPT 3.0

v赋值时可以使用引号,它们将有如下意义:
§双引号:允许通过$符号引用其他变量值
如NEW=“WORD$Version”,将引用上面的变量,结果是WORD3.0
§单引号:禁止引用其他变量值,$视为普通字符
当需要用$符号时。如CASH=‘US$IS’
§反撇号:命令替换,提取命令执行后的输出结果
如EX=`pgrep –U root | wc –l`,把命令结果赋给EX
v从键盘输入内容为变量赋值
§ 格式: read [-p “提示信息”] 变量名
如read –p “请输入循环次数:” CISHU
[root@localhost test]# echo $NEW
[root@localhost test]#echo $CASH
[root@localhost test]#EX='PGREP -U root | wc -l'
pgrep:invalid user name:root
[root@localhost test]#read -p "请输入循环次数: " CISHU
请输入循环次数:1(这个自定义)
v设置变量的作用范围
§格式1:export 变量名 ... (已有的变量)
§格式2: export 变量名=变量值 ...(新定义的变量)
§—— 两种格式可以混合使用
[root@localhost ~]# echo "$Product $Version"
PPT 3.0
[root@localhost ~]# export Product Version
[root@localhost ~]# bash (进入当前工作区的一个子环境,相当于副本)
[root@localhost ~]# echo "$Product $Version"
PPT 3.0
[root@localhost ~]# echo “$EX $CISHU“ (它们则没结果)
[root@localhost ~]# exit (回到主工作区)
[root@localhost ~]# echo “$EX $CISHU“
例 :echo $EX $CISHAK=`expr $EX + $CISHU` (假定read 时输入15)
echo $AK
例 AK=`expr $EX - $CISHU`echo $AK
例 AK=`expr $EX \* $CISHU`echo $AK
例 AK=`expr $EX / $CISHU`echo $AK
例 AK=`expr $EX % $CISHU`echo $AK
2.2特殊的shell变量
v环境变量
§由系统提前创建,用来设置用户的工作环境
§配置文件: /etc/profile、~/.bash_profile
v常见的环境变量:
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# PATH=“$PATH:/root” (添加一下新路径/root)
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root
v位置变量
§表示为 $n,n为1~9之间的数字,超过9则用${n}
[root@localhost ~]# ./myprog.sh one two three four five six
[root@localhost ~]# cat myprog.sh
[root@localhost ~]# sh myprog.sh {a..z}
[root@localhost ~]# cat mybak.sh
[root@localhost ~]# sh mybak.sh /etc/passwd /etc/shadow
[root@localhost ~]# ls *.tgz
三、总结
Shell变量是在Shell脚本中用来存储数据的一种方式,可以用来保存命令的输出、用户输入的数据或者其他需要在脚本中多次使用的值。学习Shell变量可以帮助我们更好地管理和操作数据,提高脚本的灵活性和可维护性。
在学习Shell变量时,我发现以下几点是特别重要的:
1. 变量的定义和赋值:在Shell脚本中,可以使用等号(=)来给变量赋值,但是等号两边不能有空格。变量名和赋值之间也不能有空格。例如:name="John"。
2. 变量的使用:在使用变量时,需要在变量名前加上美元符号($),以获取变量的值。例如:echo $name。
3. 特殊变量:在Shell脚本中,有一些特殊的变量,如$0表示脚本的名称,$1、$2等表示传递给脚本的参数,$#表示参数的个数,$?表示上一个命令的退出状态等。
4. 只读变量:可以使用readonly命令来将变量设置为只读,这样就不能再对其进行修改。
5. 删除变量:可以使用unset命令来删除一个变量。
通过学习Shell变量,我对Shell脚本的编写和使用有了更深入的理解,也能更灵活地处理数据和操作。在实际的编程中,合理地运用Shell变量可以提高效率和代码的可读性,是一个非常重要的知识点。