一、 Shell变量
1. 变量可分为两类: 环境变量(全局变量) 和 局部变量 。
环境变量 : 所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器、shell脚本和各类应用 。
环境变量可以在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的.bash_profile文件中或全局配置
/etc/bashrc、/etc/profile文件或者/etc/profile.d/ 中定义 。 将环境变量放入profile文件中 , 每次用户登录时这些变量值都将被初始化
所有环境变量均为大写。
环境变量应用于用户进程前,必须用export命令或source或"."命令导出。
通过百度 查看一些linux常用的系统环境变量。
常用的环境变量 :
(1) 修改 history命令显示的历史命令记录数: HISTFILESIZE=5
HISTSIZE=5
(2) 查看系统文件的类型: $HOSTTYPE
(3) 查看系统主机名: $HOSTNAME
局部变量 :
定义变量 : (1) 变量名=value
(2) 变量名=‘value‘ , 使用单引号中的内容是什么就是什么,里面如果有变量是不会进行解析的。
(3) 变量名="value" , 使用双引号引的内容中,如果有变量会将变量解析成内容进行显示
考题 : a = 192.168.1.2
b = ‘192.168.1.2‘
c = "192.168.1.2"
a = 192.168.1.2 - $a
b = ‘192.168.1.2 - $a‘
c = "192.168.1.2 - $a"
echo "a = $a"
echo "b = $b"
echo "c = ${c}"
注: $a 与 ${c} 是一样的效果
答案 : a = 192.168.1.2 - 192.168.1.2
b = 192.168.1.2 - $a
c = 192.168.1.2 - 192.168.1.2 - 192.168.1.2
将变量作为内容的两种方式:
(1) cmd = `date + %F`
(2) cmd = $(date + %F)
什么时候使用${var}这种带大括号的场景 ?
如: tar -xzvf fcz_$pwd_log.tar.gz ,系统不知道是pwd做为变量 还是 pwd_log做为变量
此时如果使用大括号 tar -xzvf fcz_${pwd}_log.tar.gz 明确告诉系统pwd是变量,而pwd_log不是变量 。