1. 变量的定义
- 定义本身
变量就是内存一片区域的地址 - 变量存在的意义
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题
2. shell 脚本中变量的定义方法
1).环境级别
‘export a=1’
在环境关闭后变量失效’(退出当前环境时系统会清理内存‘export a=1’会被清理)因此脚本执行失效
2).用户级别
‘vim ~/.bash_profile’
‘export a=1’
以上的声明方式是临时的,当此 shell 关闭再开启时,或者打开另外一个 shell 时,变量的声明都不会生效;
[root@westoslinux mnt]# vim ~/.bash_profile
[root@westoslinux mnt]# source ~/.bash_profile
3).系统级别
切换用户之后脚本失效
[root@westoslinux ~]# source /etc/profile.d/a.sh
对于系统级别的环境变量设定的查看,可以用命令 env 来进行查看。
3.变量名称
1).变量名称可包含的字符
字母
下划线_
数字
2).变量名称定义规则
不能用数字开头
建议:
变量名称全用大写字符,当变量名称比较长时变量名称常用_区分子类;
WESTOS
Westos_Linux
westiS_Linux
4. 变量的转译
1).转译
- \ ##转移单个字符
- “ ” ##弱引用,批量转译个数字符,不能转译 “ \“、 “ ` "、 " $ "、 " ! "
- ’ ’ ##强引用
2).声明
3).变量的数组
[root@westoslinux ~]# a=(1 2 3 4 5)
[root@westoslinux ~]# echo $a
[root@westoslinux ~]# echo ${a[0]}
[root@westoslinux ~]# echo ${a[1]}
[root@westoslinux ~]# echo ${a[-1]}
[root@westoslinux ~]# echo ${a[-2]}
[root@westoslinux ~]# echo ${a[@]}
[root@westoslinux ~]# echo ${a[*]}
[root@westoslinux ~]# echo ${a[@]:2:2}
[root@westoslinux ~]# echo ${#a[@]}
[root@westoslinux ~]# a[6]=7
[root@westoslinux ~]# echo ${a[6]}
[root@westoslinux ~]# echo ${a[@]}
[root@westoslinux ~]# unset a[2]
[root@westoslinux ~]# echo ${a[@]}
[root@westoslinux ~]# unset a
[root@westoslinux ~]# echo ${a[@]}
5. Linux 中命令的别名设定
1).临时设定
alias xie=‘vim’
2).用户级别
vim ~/.bashrc
alias xie=‘vim’ ##只针对此用户生效
3).系统级别
vim /etc/bashrc ##针对系统的所有用户生效
alias xie=‘vim’
[root@westoslinux ~]# vim /etc/bashrc
[root@westoslinux ~]# source /etc/bashrc
4).删除
unalias xie ##删除当前环境中的alias
6. 用户环境变量的更改
1).用户级别
[root@westoslinux mnt]# vim ~/.bash_profile
2).系统级别
[root@westoslinux mnt]# vim /etc/profile.d/path.sh
3).直接利用命令执行结果
$()|`` ##优先执行
TEST=‘hostname` 等同于TEST=$(hostname)
4).脚本中的参数
非交互模式:没有回应直接给出结果
[root@westoslinux mnt]# vim wesstos.sh
[root@westoslinux mnt]# sh westos.sh
[root@westoslinux mnt]# sh wesstos.sh westos redhat linux
交互模式传参:有回应
read WESTOS ##对westos赋值
read -p “please inout word:” ##输出提示语
7. 脚本函数
定义:程序的别名
设定方式:
WORD()
{
action1
action2
}
WORD 在脚本中就代表action1 action2这两个动作
[root@westoslinux mnt]# vim test.sh
[root@westoslinux mnt]# sh test.sh