1.变量的定义
定义本身,变量就是内存一片区域的地址,在程序运行过程中值时允许被改变的量,
在shell中变量时不能永久保存在系统中的,必须在文件中声明
2.shell脚本中变量的定义方法
echo $a #显示a的变量值
####环境级别,只在当前shell中生效,关闭shell则变量丢失
export a=1 #export来声明变量这样就可以使当前shell中的所有子shell识别
####用户级别,写在用户的骨文件中,只针对当前用户生效
vim ~/.bash_profile
///
export a=1
///
source ~/.bash_profile #使文件更改生效
####系统级别
vim /etc/profile #系统级环境变量自定义配置文件,不推荐修改
export a=2
vim /etc/profile.d/westos.sh
///
export b=3 #系统级环境变量自定义子配置文件,对所有用户生效
///
source /etc/profile.d/westos.sh #使更改生效
3.变量的转译
1).转译
\ #转译单个字符
“ ” #弱引用,批量转译个数字符,不能转译“" “`” “$” “!”
’ ’ #强引用,可以引用所有
2).声明${}
a=1
echo $ab #当显示$ab时本身想让$a的值显示出来,到那时系统识别$ab是一个变量名称
echo ${a}b #所以在此要对这个变量进行声明
3).变量的数组
a=(1 2 3 4 5)
a$[a[@]:起始元素id:元素个数]
echo ${a[0]} #显示数组的第一个元素
echo ${a[1]} #显示数组的第二个元素
echo ${a[-1]} #显示数组的最后一个元素
echo ${a[*]} #显示数组的所有元素
echo ${a[@]} #显示数组的所有元素
echo ${#a[@]} #显示数组中元素的个数
echo ${a[@]:0:3} #从第一个元素开始显示三个
echo ${a[@]:1:3} #从第二个元素开始显示三个
unset a[n] #删除数组中的第n+1个元素
unset a | unset ${a[*]} #删除数组
4.Linux中命令的别名设定
alias xie= ‘vim’ #临时设定
vim ~/.bsahrc
///
alias xie= 'vim' #只针对当前用户生效
///
vim /etc/bashrc alias xie='vim' #shell的配置,永久生效
删除别名:
先删掉配置文件内容,然后unalias.xie
5.利用命令执行结果设定变量
设定方式:
~/.bash_profile
export PATH=$PATH:/mnt
/etc/bash_profile
export PATH=$PATH:/mnt
1).直接利用命令执行结果
$()|
TEST=hostname TEST=$(hostname)
[root@westoslinux ~]# TIME=`date` #利用命令的输出指定变量的值
[root@westoslinux ~]# echo $TIME
Sat Aug 14 15:13:49 CST 2021
2).脚本中的传参
非交互模式:
*)变量值传递
$0 is /mnt/test.sh #脚本名称
$1 is #脚本后的第一串字符串
$2 is #脚本后的第二串字符串
$3 is #脚本后的第三串字符串
$# is #脚本后所跟字符串的个数
$* is #脚本后跟的所有字符串,模式为“1 2 3”
$@ is #脚本后的所有字符串,模式为“1” “2” “3”
$# is #脚本后所输入的字符串的个数
$$ 当前开启shell的id号
交互模式传参:
用read实现变量传递 实现交互式变量
read WESTOS #对westos进行赋值
read -s WESTOS #-s隐藏输入的内容
read -p "input:" WESTOS #输入提示语
6.脚本函数
定义:程序的别名
设定方式:
WORD()
{
action1
action2
}
WORD 在脚本中就代表action1 action2这两个动作
脚本练习:
create_user.sh username
check user
if user exist -----> user is exist
if user not exist ------ create user —> Please input user’s password : westos
set user’s password is westos
vim create_user.sh
///
#!/bin/bash
[ -z "$1" ] && {
echo "Error: Please input username following script !!"
exit
}
id $1 &> /dev/null && {
echo "$1 is exist"
}||{
useradd $1
read -p "Please input password: " -s PASS
echo ""
echo $PASS | passwd --stdin $1 &> /dev/null && echo $1 is created !!
}