目录
1.变量的定义
2.shell脚本中变量的定义方法
3.变量的转译
4.Linux中命令的别名设定
5.用户环境变量的更改
6.利用命令的执行结果设定变量
7.脚本函数
1.变量的定义
1)定义本身
变量就是内存一片区域的地址
2)变量存在的意义
命令无法操作一直变化的目标:用一串固定的字符来表示不固定的目标可以解决此问题
2.shell脚本中变量的定义方法
环境级别
export a=1
在环境关闭后变量失效
用户级别(只针对当前用户生效)
vim ~/.bash_profile //shell环境的配置文件
export a=1
source .bash_profile //使配置文件生效
系统级别
vim /etc/profile //系统级别的传参
export a=2
source /etc/profile
vim /etc/profile.d/westos.sh //自定义自配置文件
export b=3
变量名称
变量名称可包含的字符:字符、_、数字,不能用数字开头
建议变量名称短全用大写字符,变量名称长用_区分子类,如WESTOS、Westos_Linux、westoS_Linux
3.变量的转译
转译
# // 转译单个字符"" //弱引用,批量转译个数字符 不能转译“\”,“”,“$”,“!”'' //强引用
声明
echo $abecho ${a}b
变量的数组
a=(1 2 3 4 5)
a$[a[@]:起始元素id:元素个数]
echo ${a[0]} //数组中第一个元素
echo ${a[*]} //数组中所有元素
echo ${a[@]} //数组中所有元素
echo ${a[@]:0:3} //数组中1到3个的元素
echo ${#a[@]} //数组中元素的个数
unset a[n] //删除数组中的第n-1个元素
unset a //删除a这个数组
4.Linux中命令的别名设定
alias xie='vim' //临时设定
vim ~/.bashrc //只针对于用户生效
alias xie='vim'
vim /etc/bashrc //针对系统所有用户生效
alias xie='vim'
unalias xie //删除当前环境中的alias
5.用户环境变量的更改
环境变量:
用户在操作系统时使用到的命令搜索路径
设定方式
vim ~/.bash_profile
export PATH=$PATH:/mnt //用户级别
vim /etc/bash_profile
export PATH=$PATH:/mnt //系统级别
6.利用命令的执行结果设定变量
直接利用命令执行结果
$(),`` //优先执行
TEST=hostname TEST=$(hostname)
脚本中的传参
非交互模式:
$0 is /mnt/test.sh //脚本本身
$1 is westos //脚本后所输入的第一串字符
$2 is linux
$3 is redhat
$* is westos linux redhat //脚本后所输入的所有字符"westos linux redhat"
$@ is westos linux redhat //脚本后所输入的所有字符'westos' 'linux' 'redhat'
$# is 3 //脚本后所输入的字符串个数
交互模式传参:
read WESTOS //对westos赋值
read -p "please input word:" //输出提示语
-s //隐藏输入内容
7.脚本函数
定义:
程序的别名
设定方式:
WORD()
{
action1
action2
}
WORD 在脚本中就代表action1 action2这两个动作
练习脚本
ACTION()
{
read -p "please input username: " USERNAME
[ "$USERNAME" = "exit" ] && {
echo exit
exit
}
id "$USERNAME" &> /dev/null && {
echo "$USERNAME" is exist
ACTION
}||{
echo $USERNAME is not exist
read -p "please input password: " PASSWORD
useradd $USERNAME
echo $PASSWORD | passwd --stdin $USERNAME
echo $USERNAME is created
ACTION
}
}
ACTION
实现的功能是添加和删除用户。用户可以选择添加或删除,如果选择删除,会要求输入用户名,然后进行删除;如果选择添加,则先检查用户是否已经存在,如果存在则提示用户已经存在,如果不存在,则要求输入密码,然后创建用户并设置密码。
echo "[d]elete [A]dd"
read -p "please input action:" ACTION
[ "$ACTION" != "a" -a "$ACTION" != "d" ] && {
echo wrong action
exit
}
[ "$ACTION" = "d" ] && {
read -p "please input username:" USERNAME
id $USERNAME &> /dev/null && {
userdel -r $USERNAME
echo $USERNAME is deleted
}||{
echo $USERNAME is not exist
}
exit
}
[ "$ACTION" = "a" ] && {
read -p "please input username:" USERNAME
id $USERNAME &> /dev/null && {
echo $USERNAME is exist
}||{
read -p "please input password: " PASSWORD
useradd $USERNAME
echo $PASSWORD | passwd --stdin $USERNAME
echo $USERNAME is created
}
exit
}