1.变量是什么?
变量是用来临时保存数据的,该数据是可以变化的数据
2.什么时候需要定义变量?
- 某个内容需要多次使用,并且在代码中重复出现
- 在代码运作的过程中,可能会把某些命令的执行结果保存起来,方便后续需要使用这些结果
3.变量如何定义?
变量名=变量值
变量名:用来临时保存数据的
变量值:就是临时的可变化的数据
4.变量的定义规则
a.变量名区分大小写
b.变量名不能有特殊符号(注意:对于有空格的字符串给变量赋值时,要用引号引起来)
c.变量名不能以数字开头(注意:不能以数字开头并不代表变量名中不能包含数字!)
d.等号两边不能有任何空格(这里和Python Java写法不一样)
e.变量名尽量做到见名知意(一般变量名使用大写)
5.变量的定义方式
1).基本方式
直接赋值给一个变量
说明: $变量名 和 ${变量名}的异同 相同点:都可以调用变量 不同点:${变量名}可以只截取变量的一部分,而$变量名 不可以
2).命令执行结果赋值给变量
3).交互式变量(read)
目的:让用户自己给变量赋值,比较灵活
语法:read [选项] 变量名
常见选项
-p : 定义提示用户的信息
-n : 定义字符数(限制变量值的长度)
-s : 不显示(不显示用户输入的内容,如输入密码等私密性的东西)
-t : 定义超时时间,默认单位为秒(限制用户输入变量值的超时时间)
4).定义有类型的变量(decla)
目的:给变量做一些限制,固定变量的类型,比如:整形、只读
用法:declare 选项 变量名=变量值
常用选项:
-i : 将变量看成整数 declare -i A=123
-r : 定义只读变量 declare -r B=HELLO
-a : 定义普通数组;查看普通数组
-A : 定义关联数组;查看关联数组
-x : 将变量通过环境导出 declare -x AAA=123456 等于export AAA=123456
变量的分类
1).本地变量
- 本地变量:当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效。
定义方式:变量名=变量值
查看进程父子关系:ps -auxf |grep bash
2).环境变量
- 环境变量:当前进程有效,并且能够被子进程调用
env
查看当前用户的环境变量
set
查询当前用户的所有变量(临时变量与环境变量)
export 变量名=变量值
或者变量名=变量值; export 变量名
3).全局变量
- 全局变量:全局所有的用户和程序都能调用,且继承,新建的用户也默认能调用。
- 解读相关配置文件
说明:以上文件修改后,都需要重新source让其生效或者退出重新登录 - 用户登录系统读取相关文件的顺序
/etc/profile
$HOME/.bash_profile
$HOME/.bashrc
/etc/bashrc
$HOME/.bash_logout
4).系统变量
- 系统变量(内置bash中变量):shell本身已经固定好了它的名字和作用.
#!/bin/bash
#了解shell内置变量中的位置参数含义
echo "\$0 = $0"
echo "\$# = $#"
echo "\$* = $*"
echo "\$@ = $@"
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$3 = $3"
echo "\$11 = ${11}"
echo "\$12 = ${12}"
- 进一步了解 $* 和 $@ 的区别
$*
: 表示将变量看成一个整体$@
:表示变量是独立的
#!/bin/bash
for i in "$@"
do
echo $i
done
echo "======我是分割线======="
for i in "$*"
do
echo $i
done