『3-4』Linux之shell脚本中的变量
变量的定义
定义本身:变量就是内存一片区域的地址
变量存在的意义
命令无法操作一直变化的目标
用一串固定字符来表示不固定的目标可以解决此问题
shell脚本中变量的定义方法
环境级别
export a=1
在环境关闭后变量失效,bash级别
新开一个bash
用户级别
vim ~/.bash_profile
export a=1
新开一个bash
切换用户westos
系统级别
vim /etc/profile
export a=2
新开一个bash
切换westos用户
vim /etc/profile.d/westos.sh
export b=3
新开一个bash
su - westos
三、变量名称
变量名称可包含的字符
字母
下划线
数字
变量名称定义规则
不能用数字开头
建议:
变量名称短全用大写字符
变量名称长用_区分子类
WESTOS
Westos_Linux
westoS_Linux
1.变量的转译
\
转译单个字符
“”
#弱引用,批量转译个数字符 不能转译“\” “ ” “$” “!"
''
强引用
2. 声明
a=1
echo $ab
echo ${a}b
3.变量的数组
a=(1 2 3 4 5 6)
${a[@]:起始元素id:元素个数}
echo ${a[0]}
数组中第一个元素
echo ${a[-1]}
数组中最后一个元素
ehco ${a[*]}
数组中的所有元素
echo ${a[@]}
同上
echo ${a[@]:0-3}
数组中1-3个元素
echo ${#a[@]}
数组中元素的个数
create_user.sh userfile
userfile中的用户会被全部建立
四.Linux中命令的别名设定
alias xie='vim'
临时设定
vim ~/.bashrc
只针对此用户生效
alias xie='vim'
vim /etc/bashrc
针对系统所有用户生效
alias xie='vim'
unalias xie
删除当前环境中的alias
5.用户环境变量的更改
[root@node126 ~]# date +%H:%M:%S
09:26:22
1.直接利用命令执行结果
$()|’’ 优先执行
TEST=hostname TEST=$(hostname)
TIME=$(date +%H:%M:%S)
[root@node126 ~]# TIME=$(date +%H:%M:%S)
[root@node126 ~]# echo $TIME
09:29:16
[root@node126 ~]#
2.脚本中的参数
非交互模式:
$0 is /mnt/test.sh
$1 is westos
$2 is linux
$3 is redhat
$* is westos linux redhat
read -p "input:" test
-p 提示字符串 read 命令交互读取 test 变量名称
7.脚本函数
练习脚本
sh create_user.sh
Please input username: westos
westos exist --------->westos is exist-----> Please input username:
westos not exist --------- please input password:无回显密码
此用户会自动建立并且密码为提示后设定的密码
并显示:westos is created
并再次提示Please input username:
当Please input username:exit
此脚本退出
脚本书写思路
判定exit退出
[“USER” = “exit” -o “$User” = “EXIT”] && {
echo bye
}||{
进入判定用户是否存在
}
判定用户是否存在
用户存在显示返回判定exit
id 用户名称变量 &> /dev/null && {
echo 用户存在
判定exit
}
用户不存在建立用户返回判定exit
||{
显示 please input password:
}