shell脚本中的变量
什么是变量
变量就是内存一片区域的地址
变量存在的意义
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题
shell中脚本变量的定义方法
环境级别
export a=1
这种变量设置在退出环境后消失
用户级别
vim /root/.bash_profile
环境变化后依然存在
切换用户,无法使用
系统级别
vim /etc/profile(主配置文件)
输出时可以发现系统级别的优先级高于用户
vim /etc/profile.d/westos.sh (profile.d目录下都是子配置文件)
变量的转译
\:转译单个字符
例如
vim check.sh
运行脚本
转译
运行脚本
“”:弱引用,批量转译个数字符,不能转译“\” “`” “$” “!”
‘’:强引用 批量转译字符
变量的声明
a=1
echo $ab
echo ${a}b
变量的数组
${a[0]}
${a[-1]}
${a[*]}
${a[@]}
*和@的区别
在这个实验中*代表"1 2 3 4 5" 一次打印
@则代表“1” “2” “3” “4” “5” 分开
可以用for循环证明
vim for.sh
只循环了一次
vim for.sh
循环了五次
脚本练习
sh users_create.sh userfile passfile
userfile中的用户会被全部建立且密码与passfile对应
vim userlist
vim passlist
vim users_create.sh
脚本测试
linux中命令的别名
alias zz=‘vim’ 临时设定
查看结果 zz
退出环境测试
针对用户生效
vim /root/.bashrc
测试zz
退出环境测试
切换用户测试
系统级别的别名
vim /etc/bashrc
切换用户测试 su - westos
删除别名
删除配置文件中添加的内容,查看别名
删除当前环境中的别名
unalias zz
用户环境变量的更改
环境变量:用户在操作系统时使用到的命令搜索路径
设定方式
用户级别
vim /root/.bash_profile
vim /mnt/westos.sh
此时不需要绝对路径就可以运行/mnt脚本
利用命令执行的结果设置变量
直接利用命令的执行结果
$()|`` 优先执行
例如 $(cat /etc/passwd)
或
‘cat /etc/passwd’
脚本中的传参
非交互模式
vim /mnt/westos.sh
运行,可以看出$0代表脚本本身
vim /mnt/westos.sh
运行,$1代表脚本后的第一串字符
vim /mnt/westos.sh
运行 ,$2代表脚本后的第二个字符串
vim /mnt/westos.sh
$*代表脚本后所根的所有字符
vim /mnt/westos.sh
[email protected]代表脚本后所跟的所有字符,与$*的区别和数组相同
vim /mnt/westos.sh
$#代表脚本后所跟字符串的个数
交互模式传参
read
vim /mnt/westos.sh
sh westos.sh
read -p “xxxxxxxxxx” XXX -s:隐藏输入内容
脚本函数
定义:程序的别名
作用:在写脚本时可能会遇到多处重复字符,这时就可以使用函数
设定方式
NAME(){
内容
}
NAME 在脚本中就代表了函数内容
例如
vim westos.sh
运行:效果与ECHO函数效果一致