1.变量的定义
1)定义本身
变量就是内存一片区域的地址
2)变量存在的意义
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题
2.shell脚本中变量的定义方法
由上面我们可以看出三种执行脚本的方法只有source的方法可以看出效果,因为source方法是在当前shell执行脚本,sh 和 /mnt/test.sh的方法会打开一个新的子 shell,不在当前环境,所以不能执行出 a 的内容。
1)环境级别,在当前环境生效
export a=1 export:让子进程可以访问父进程的变量。
在环境关闭后或更换环境后变量失效,生命周期短。如:
开启一个新的 shell 执行内容又显示不出来。
2)用户级别,在当前用户生效
每个用户的家目录下都有一个这样的文件,定义当前用户的环境配置。
vim ~/.bash_profile
export a=1
source ./bash_profile source调用后才可以生效
当我们切换用户后:
无法执行出内容
3)系统级别,在当前系统生效
vim /etc/profile
最后一行加上 export a=2
当我们切换至thermal 用户时,显示的a的值竟然为1,这是因为系统默认读取的文件顺序为
全局设定----->用户设定,所以在读取用户的设定时覆盖了全局设定,需重新source才可以使用全局设定,具体操作如下图。
————————
我们也可以编辑 /etc/profile.d/ 底下的文件来设定
vim /etc/profile.d/westos.sh
export b=3
重新打开一个shell后,依然生效。
4)变量名称的设定。
模式:
"字符" "_" "数字" 不能用数字开头
建议:
变量名称短全用大写字符
变量名称长用_区分子类
例如:
WESTOS 全部大写
Westos_Linux 波型
westoS_Linux 峰型
3.变量的转译
1)转译
\ 转译单个字符
"" 弱引用,批量转译个数字符 不能转译 "\" "`" "$" "!"
'' 强引用
2)声明变量
a=1
echo $ab
echo ${a}b
声明了a是变量b不是
3)变量的数组
{} 为声明变量,[ ] 是变量的下标,默认从0开始,0是数组的第一个字符,1是第二个。
a=(1 2 3 4 5)
echo ${a[0]} 显示第一个
echo ${a[-1]} 显示最后一个
echo ${a[*]} 显示所有的内容,但是视为一个整体
echo ${a[@]} 显示所有内容,视为单个单个的字符
编写脚本测试 @ 和 * 的区别
@执行了三次
*只执行了一次,将123视为一个整体。
4.Linux中命令的别名设定
这是系统中已经定义过的别名。
alias cc='vim' 临时设定,新环境中不生效
vim ~/.bashrc 只针对当前用户生效
source ~/.bashrc
alias cc=‘vim’
在新的环境中也生效了。
但是切换用户后失效。
vim /etc/bashrc 针对系统所有用户生效
source /etc/bashec
alias cc=‘vim’
所有用户都可以用cc执行vim命令。
unalias cc ##删除当前环境中的alias