1.4Bash变量
- 1.4.1用户自定义变量
- 1.4.1.1变量设置规则
1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头
2)在Bash中,变量的默认类型都是字符串型,如果需要进行数值计算,则必须指定变量类型为数值型
3)变量用等号连接值,等号左右两侧不能有空格
4)变量的值如果有空格,需要使用单引号或双引号包括
5)在变量的值中,可以使用“\”转义符
6)如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要使用双引号包含“$变量名”或用${变量名}包含
7)如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令
8)环境变量名建议大写,便于区分
- 1.4.1.2变量分类
1)用户自定义变量:只在当前的shell生效
2)环境变量:主要保存的是和系统操作环境相关的数据
3)位置参数变量:主要用来向脚本当中传递参数或数据,变量名不能自定义,变量作用书固定的
4)预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的
- 1.4.1.3本地变量(用户自定义变量)
1)变量定义
name="tom"
2)变量叠加
aa=123 aa="$aa"456 aa=${aa}789
3)变量调用
echo $aa
4)变量查看
set
5)变量删除
unset name
- 1.4.2环境变量
- 1.4.2.1设置环境变量
1)声明变量
export 变量名=变量值
2)查询变量
env
3)删除变量
unset
- 1.4.2.2系统常见环境变量
1)系统查找命令路径
echo $PATH
2)PATH变量叠加
PATH=”$PATH”:/root/sh
PS1:定义系统提示符的变量
- 1.4.3位置参数变量
- 1.4.4预定义变量
- 1.4.4.1预定义变量
- 1.4.4.2接收键盘输入 read
read [选项] [变量名]
选项:
-p 提示信息 在等待read输入时,输出提示信息
-t 秒数 read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数 read命令只接受指定的字符数,就会执行
-s 隐藏 隐藏输入的数据,适用于机密信息的输入
- 1.4.5数值运算与运算符
- 1.4.5.1declare声明变量类型
declare [+/-][选项] 变量名
选项:
-: 给变量设定类型属性
+: 取消变量的类型属性
-i: 将变量声明为整数型(integer)
-x: 将变量声明为环境变量
-p: 显示指定变量的被声明的类型
- 1.4.5.2数值运算
方法1
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和bb赋值
[root@localhost ~]# declare -i cc=$aa+$bb
方法2:expr或let数值运算工具
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和变量bb赋值
[root@localhost ~]# dd=$(expr $aa + $bb)
#dd的值是aa和bb的和。注意“+”号左右两侧必须有空格
方法3(推荐):“$((运算式))”或“$[运算式]”
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
[root@localhost ~]# ff=$(( $aa+$bb ))
[root@localhost ~]# gg=$[ $aa+$bb ]
- 1.4.5.3运算符
示例:
[root@localhost ~]# aa=$(( (11+3)*3/2 ))
#虽然乘和除的优先级高于加,但是通过小括号可以调整运算优先级
[root@localhost ~]# bb=$(( 14%3 ))
#14不能被3整除,余数是2
[root@localhost ~]# cc=$(( 1 && 0 ))
#逻辑与运算只有想与的两边都是1,与的结果才是1,否则与的结果是0
- 1.4.6变量测试与内容替换
1.5环境变量配置文件
- 1.5.1简介
环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量。
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
~/.bash_profile
~/.bashrc
注意:放在/etc下的配置文件对所有用户生效;~/目录下只对root用户生效
使配置文件直接生效:
source 配置文件
或
.配置文件
- 1.5.2作用
环境变量配置文件调用流程
- 1.5.2.2主要环境配置文件作用
/etc/profile的作用:
USER变量: 当前用户EUID
LOGNAME变量: 当前用户名
MAIL变量: 邮箱
PATH变量:
HOSTNAME变量: 主机名
HISTSIZE变量: 历史
umask: 权限
调用/etc/profile.d/*.sh文件
~/.bash_profile的作用
调用了~/.bashrc文件。
在PATH变量后面加入了“:$HOME/bin”这个目录
~/.bashrc的作用
定义默认别名
调用/etc/bashrc
/etc/bashrc的作用
PS1变量
umask
PATH变量
调用/etc/profile.d/*.sh文件
- 1.5.3其他配置文件和登录信息
- 1.5.3.1其他配置文件
1、注销时生效的环境变量配置文件
~/.bash_logout
2、其他配置文件
~/bash_history
- 1.5.3.2shell登录信息
本地终端欢迎信息: /etc/issue
远程终端欢迎信息: /etc/issue.net
转义符在/etc/issue.net文件中不能使用
是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,
加入“Banner /etc/issue.net”行才能显示(记得重启SSH服务)
登陆后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息