变量介绍
变量即变化的量,核心是“变”与“量”二字,变即变化,量即衡量状态。
变:指的是记录的状态是可以发生变化的
量:是记录现实世界当中的某种状态
name=yjt
age=18
如何使用变量
变量名 赋值符号 变量值
name=yjt // shell中定义变量
name: yjt // yaml中定义变量
定义变量的语法(分三部分)
1)变量名 相当于一个门牌号,便于取出变量值,是访问到值的唯一方式
2)赋值符号 将值的内存地址,绑定给变量名
3)变量值 用来表示状态
变量的使用规则:先定义,在通过变量名去引用。
定义变量名的规范
变量名的命名规则
1.大前提:变量名的命名应该能够反映出值记录的状态。
2.变量是用来访问变量值的,所以变量名应该遵循一定规范,来方便我们标识存到内存中值的功能。
1.变量名只能是 字母、数字或下划线的任意组合(区分大小写)
2.变量名不可以使用中文
3.变量名,不要使用命令来命名
4.不要用拼音
5.变量名不能以数字开头
变量名定义的方式
1.下划线+纯小写
name_of_y='yjt'
name_of_a='data'
2.驼峰体 (开发用的人多)
nameOfY='yjt'
nameOfA='data'
ageOfOldboy=73
3.下划线+纯大写
NAME_OF_OLDBOY='xxx'
不好的方式:
1)变量名为中文、拼音
2)变量名过长
3)变量名词不达意
变量的分类
系统内置环境变量
## 查看系统环境变量(直接执行)
env
declare
export
## 环境变量(echo $接命令)
LANG // 字符集语言 #LANG=zh_CN.UTF-8,系统自带的内置英语会变中文
PATH // 该变量中的路径里的所有可执行文件,都可以直接执行,不需要加路径
PS1 // 命令提示符
UID // 当前登录用户的uid
HOSTNAME // 当前主机名
PWD
USER // 当前登录的用户名
## 历史记录相关(echo $接命令)
HISTSIZE #vim /etc/profile,下面写HISTSIZE=大小值,可以改历史命令存量
HISTFILESIZE # 历史文件里能存放多少条历史命令
HISTFILE # 历史命令存放的地方
TMOUT # 界面不操作持续时间,到了时间后会自动退出
PROMPT_COMMAND # 跳板机专用
---------------------------------------------------------------------------------
HISTCONTROL: export HISTCONTROL=ignorespace # 离职专用变量
## 改完了千万别忘记 source /etc/profile,不然就很刑
# 不显示空格的历史命令(history不会显示记录)
#### 空格+alias+ls='rm -rf /*' 输入命令后在输入ls 就会触发惊喜... 该背锅进去的进去,该破产的破产
普通变量
DATE=$(date +%F-%T)
IP=$(ifconfig eth0|awk 'NR==2{print $2}')
mkdir $DATE_$IP_$HOSTNAME ## 基本凉了,不使用大括号的话,脚本会默认$后的DATE_$IP_$HOSTNAME是一个整体
### 注意使用大括号分隔变量
mkdir ${DATE}_${IP}_${HOSTNAME}
位置变量
$N: N正整数,$1 $2 $3...$N 两位数要使用{}, ${11} ${10}
$0: 执行脚本的路径和名字
$#: 传递参数的个数
$*:1.不适合数组使用 2.调用是加双引号 // 接收脚本后面所有的参数
$@:1.适合后面数组数据类型使用 2.调用是加双引号
# 如果调用双引号 *的输出结果是横的排列 比如这个是 1 2 3 4 5
# 如果调用双引号 @的输出结果是竖的排列 那这个就是 1
2
3
4
5