摘要:介绍bash变量,概念,分类。详细说明用户变量,环境变量和预定义参数变量(位置参数变量)
一 Bash变量
1.变量:是计算机内存的单元,存放的值的可以改变。
2.变量命名规则
变量可以用字母,数字,下划线组成。但不能用数字开头
变量名在有效范围是唯一的
一般命名要有相关含义
(Bash中,变量默认是字符串型 弱类型(变量可以模糊定义))
3.变量分类
用户自定义变量
环境变量:主要保存和系统操作环境相关的数据。变量可以自定义,但对系统生效的环境变量名和变量作用是固定的
预定义变量:Bash中已定义好变量,变量名不能自定义,变量作用固定
(
位置参数变量:用于向脚本当中传递参数或数据(属于预定义变量))
二 用户自定义变量
1.定义变量
变量名=变量值
1.
declare [+/-] [] 变量名
声明变量类型
- 设定变量类型属性
+ 取消变量类型属性
-a 数组型声明
-i 整数型声明
-x 环境变量声明
-r 只读变量声明
-p 显示指定变量被声明的类型
2.
read 变量名
读入变量,给变量赋值(从接收键盘收入)
-p "提示信息"
:在等待read输入时,输出提示信息
-t 秒数
: 指定用户输入等待时间(默认一直等待)
-n 字符数(num)
: 接受指定的字符数后自动执行
-s
: 输入信息隐藏
2.变量调用
echo $变量名
$
调用变量值 aa=123 echo $aa (输出 123)
''
单引号 aa=123 echo '$aa' (输出 $aa(即单引号里特殊符号失效))
""双引号 aa=123 echo "$aa" (输出 123)
``反引号 aa=`ls` echo $aa (输出相当执行命令ls)
$() aa=$(ls) echo $aa (输出相当执行命令ls)
3.变量叠加
x=123 x="$x"456(x=${x}456) echo x=123456
4.变量查看
set 查看所有变量
-u 设定 设定后,调用未声明变量会报错。(默认无提示)
unset 变量名
三 环境变量
三 环境变量
相对用户自定义变量,环境变量可以在是全局的。
1.定义环境变量
export 变量名=变量值 (export实际执行的是declare -a)
2.变量查看
env 仅查看环境变量
PATH变量:系统搜索命令路径
PS1变量:当前登录界面提示符
\d:显示日期。格式"星期 月 日"
\H:显示完整主机名
\t:显示时间(HH:MM:SS)
\A:显示当前时间(HH:MM)
\u:显示当前用户名
\w:显示当前所在目录完整名称
\W:显示当前所在目录最后一个目录
\$:提示符 (root显示"#",普通用户显示"$")
3.环境变量配置文件
1.环境变量立即生效
source 配置文件
2.登录完成时起作用
其中/etc/file的环境变量文件对所有用户生效,~/.file仅对对应用户起作用。
正常用户登录从/etc/profile开始读取 切换用户登录从/etc/bashrc进入
/etc/profile 主要定义USER,LOGNAME,MAIL,PATH,HOSTNAME,HISTSIZE,umask,执行/etc/profile.d/*.sh
/etc/profile.d/*.sh (其中语系变量lang.sh->/etc/sysconfig/i18n)
locale
查询系统当前语系(
/etc/sysconfig/il8n
开机系统默认语系所在文件)
(LANG 定义系统主语系的变量(当前) LC_ALL 定义整体语系变量
-a | more
查看支持的所有语系
~/.bash_profile 用户家目录bin添加到PATH 执行~./bashrc
~/.bashrc 调用命令别名
/etc/bashrc 定义PS1 (umask PATH 调用/etc/profile.d/*.sh 条件性生效(非正常登录))
3.其他环境变量
1.注销时执行环境配置文件 .bash_logout
2.登录信息
本地终端提示信息 /etc/issue(以下转义符只对此文件有效)
远程终端登录信息 /etc/issue.net (默认不显示 添加/etc/ssh/sshd_config Banner /etc/issue.net 重启ssh)
登录后信息显示 /etc/motd
四 位置参数变量(属于预定义变量)
位置参数变量 | 作用 |
$num($0,1,2...) | $0代表命令本身 $1-$9代表第1到第9个参数,10以上用数字加大括号${n} |
$* | 代表命令中行所有参数$*把所有参数看成一个参数整体 |
$@ | 也代表命令行中所有参数,$@把每个参数区分对待 |
$# | 代表命令行中所有参数个数 |
理解$num参数
理解$* $@ $#三个参数
区分$*和$@参数
五 预定义变量
预定义变量 | 作用 |
$? | 每次执行命令的正确与否,会给变量?赋值。如果?为0,则证明执行正确。否则错误 |
$$ | 存储当前进程号(PID) |
$! | 存储后台的最后一个进程的PID |
理解$?
理解$$
理解$!