一、Bash 变量概述
Shell 与其他语言的对比
(1):php 和 java 主要实现功能
(2):Shell 简化管理操作
注:内容不多,但是不太容易
二、Bash 变量与变量分类
1、什么是变量
>>> 变量四计算机内存单元,其中存放的值可以改变
>>> 变量让你能够把程序中准备使用的每一段数据都赋予一个简短的、易于记忆的名字,因此他们十分有用
2、变量命名规则
>>> 变量名必须以字母或下划线开头,名字中间只能由字母、数字和下划线组成
>>> 变量名的长度不要太长
>>> 变量名再有效的范围内必须是唯一的
>>> 再Bash 中,变量的默认类型都是字符串型
3、变量的分类
>>> 用户自定义变量:变量是用户自定义的。
>>> 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的。
>>> 位置参数变量(属于预定义变量):这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
>>> 是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
三、用户自定义变量
1、变量定义
>>> 变量名=变量名
#(中间不能有空格)
例如:x=5
name="xiao ming"
注:如果变量值中间有空格,就用双引号或者单引号,用单引号时,引号内的特殊符号(例如:&)有含义
2、变量调用
>>> echo &变量名
例如:
echo &x
echo &name
3、变量叠加(两种方法)
注:第一种好用
4、变量查看
>>> set
选项:
-u 如果设定此选项,调用未声明变量时会报错(默认无任何提示)
5、变量删除
>>> unset 变量名
注:删除的时候变量名前面不加 $
四、bash 环境变量
1、环境变量与自定义变量的区别
(1):用户自定义变量是局部变量:只在当前 Shell 中生效
(2):环境变量是全局变量:在当前 Shell 和这个 Shell 的所有子Shell 中生效
(3):变量可以自定义,但是对于系统生效的环境变量名和变量作用是固定的
>>> pstree 查看当前在哪个Shell
2、设置环境变量
>>> export 变量名=变量值 (环境变量大写)
或
变量名=变量名
exprot 变量名
3、查看环境变量
>>> set (查看所有变量)
>>> env (只查看环境变量)
4、PATH 环境变量
(1):PATH变量:系统查找命令的途径
(2):echo $PATH
# 查看PATH环境变量
(3):PATH=“$PATH”:/root/sh
# 增加PATH变量的值
5、PS1环境变量
注:以上变量定义后,系统重启后消失,想要永久定义,慢慢学
五、bash 语系变量
1、当前语系查询
>>> locale
# 查询当前系统语系
LANG :定义系统主语系的变量
LC_ALL:定义整体语系的变量
注:主要看LANG就行了,其他的很少用到
2、语系变量LANG
>>> echo $LANG
# 查看系统当前语系
>>> locale -a | more
# 查看Linux支持的所有语系
3、查询系统默认语系
>>> cat /etc/sysconfig/i18n
注:每次开机后,系统支持的语言环境
六、位置参数变量
例子1:$n
编写程序:
执行程序:
例子2:$* $@ $#
编写程序:
执行程序:
例子3:$* 和 $@ 的区别
for 循环
for i in ” $* “
# $* 中的所有参数看成一个整体,所以这个for循环只会循环一次
for y in " $@ "
# $@ 中的每个参数都看成独立的,所以 “$@" 中有几个参数就会循环几次
七、预定义变量
接收键盘输入
>>> read [选项] [变量名]
选项:
-p "提示信息" :在等待read输入时,输出提示信息
-t 秒数 :read 命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数 :read命令只接受指定的字符数,就会执行
-s :隐藏输入数据,适用于机密信息的输入
加上 -t 时间限制,-s 隐藏输入内容
加上 -n 限制输入字符个数