shell 脚本中的变量一

目录

    • 变量的定义
    • 变量存在的意义
    • shell脚本中变量的定义方法
    • 变量的转义
    • 变量的声明
    • 变量的数组
    • Linux中命令的别名设定
    • 脚本练习

变量的定义

变量就是内存一片区域的地址

变量存在的意义

命令无法操作一直变化的目标,用一串固定的字符来表示不固定的目标可以解决此问题。

shell脚本中变量的定义方法

1.环境级别
export a=1
在环境关闭后变量失效,无法保存。
实验步骤:
(1)编辑test.sh文件
发现直接在该shell下调用能够打印出来a的值,使用其他两种方式会开启子shell则不能打印出来a的值,即父进程和子进程的信息不是共享的。
shell 脚本中的变量一_第1张图片
(2)共享信息
shell 脚本中的变量一_第2张图片
(3)关闭父shell
但是一旦这个父shell关闭后,变量信息就被回收了。
shell 脚本中的变量一_第3张图片
2.用户级别
vim ~/.bash_profile
export a=2
实验步骤:
编辑.bash_profile文件
.bash_profile:shell环境信息的配置
.bash.rc:shell本身的配置
这个文件默认不生效,要使用source .bash_profile使文件生效。
由于a的值定义在red用户家目录下的.bash_profile文件,只有当red用户登录时才会加载这个文件,因此使用red用户可以打印出a的值,使用root用户则不行。
shell 脚本中的变量一_第4张图片
3.系统级别
vim /etc/profile
export a=3

vim /etc/profile.d/lyueyue.sh
export b=3
实验步骤:
(1)编辑/etc/profile文件
shell 脚本中的变量一_第5张图片
(2)测试
发现使用root用户打印出来a的值为3,使用red用户打印出来a的值仍为2,即red用户自己家目录的配置生效(首先读取全局的,再读取用户的,用户的信息会将全局信息覆盖)。
shell 脚本中的变量一_第6张图片
我们再执行一次source,发现使用red用户打印出来的值为3了,即哪个文件后被读取哪个文件就生效。
shell 脚本中的变量一_第7张图片
(3)编辑/etc/profile.d/lyueyue.sh文件
shell 脚本中的变量一_第8张图片
4.变量名称
“字符” “_” “数字”
不能用数字开头 建议: 变量名称短全用大写字符
变量名称长用_区分子类
LYUEYUE
Lyueyue_Linux
lyueyuE_Linux

变量的转义

\ :转译单个字符
“” :弱引用,批量转译多个字符 不能转译"" “`” “$” “!”
‘’ :强引用
shell 脚本中的变量一_第9张图片

变量的声明

a=1
echo $ab
echo ${a}b:表示只有a是变量,而b不是。
shell 脚本中的变量一_第10张图片

变量的数组

a=(1 2 3 4 5)
echo ${a[0]}:第一个字符
echo ${a[-1]}:最后一个字符
echo ${a[ * ]}:表示所有(所有元素是一个整体)
echo ${a[@]}:表示所有(所有元素单独的)
实验步骤:
shell 脚本中的变量一_第11张图片
我们可以写一个test.sh脚本来详细观察*和@的不同
shell 脚本中的变量一_第12张图片
shell 脚本中的变量一_第13张图片
shell 脚本中的变量一_第14张图片
shell 脚本中的变量一_第15张图片
举例:
shell 脚本中的变量一_第16张图片

Linux中命令的别名设定

alias xie=‘vim’(临时设定)
vim ~/.bashrc:只针对指定用户生效
vim /etc/bashrc:针对系统所以用户生效
unalias xie:删除当前环境中的alias
实验步骤:
(1)查看当前被定义过别名的命令
shell 脚本中的变量一_第17张图片
(2)临时设定
\转义一下,执行的就是真的。
在这里插入图片描述
shell 脚本中的变量一_第18张图片
shell 脚本中的变量一_第19张图片
(2)vim ~/.bashrc
之前的设定是临时的,当打开一个新的shell时,这个命令就失效了。
shell 脚本中的变量一_第20张图片
编辑root用户的.bashrc文件
shell 脚本中的变量一_第21张图片
新打开一个shell仍能执行写命令
shell 脚本中的变量一_第22张图片
但是注意,当切换到red用户时命令失效。
shell 脚本中的变量一_第23张图片
(3)vim /etc/bashrc文件
shell 脚本中的变量一_第24张图片
shell 脚本中的变量一_第25张图片
(4)unalias xie
此命令删除当前环境中的alias
shell 脚本中的变量一_第26张图片

脚本练习

create_user.sh userfile passfile
userfile用的用户会被全部建立
passfile中的密码会被全部设定
自己:
shell 脚本中的变量一_第27张图片
shell 脚本中的变量一_第28张图片
shell 脚本中的变量一_第29张图片

你可能感兴趣的:(linux学习)