shell脚本中的变量
1.变量的定义
- 定义:变量就是内存一片区域的地址
- 变量存在的意义:命令无法操作一直变化的目标,用一串固定的字符来表示不固定的目标可以解决此问题
2.shell脚本中变量的定义方法
-
环境级别
export A=1
环境关闭后失效
/mnt/westos.sh ##编辑输出文件
echo $A -
用户级别
vim ~/.bash_profile ##只对当前用户生效
exportA=1
source ~/.bash_profile ##调用
sh /mnt/westos.sh ##执行
-
系统级别
vim /etc/profile.d/luqq.sh ##对用户luqq生效
export A=1
test:
su - luqq
sh /mnt/westos.sh ##用户luqq可执行
vim /etc/profile.d/path.sh ##添加环境变量
PATH=$PATH:/mnt ##添加/mnt为环境变量,原始值的基础上加/mnt
chmod +x /mnt/westos.sh ##给文件可执行权限
westos.sh ##可直接调用
-
变量名称
1.变量名称字符: 字母 下划线 数字
2.规则:不可用数字开头
3.建议:变量名称短全用大写字符,变量名称长首字母大写
A=1
echo ${A}b
3.变量的转译
1)转译
\ ##转义单个字符
echo /boot
“”##弱引用,不可转义’ \ $ !
echo “############$USER###########”
echo “!5”
‘’ ##强引用
echo ‘############$USER###########’
echo ‘!’
echo ‘!5’
2)声明
a=1
echo $ab
echo ${a}b
3)变量的数组
- a={1 2 3 4 5}
${A[1]} ##显示数组第一个元素
echo $A ##显示第一个元素
echo ${A[1]} #显示第一个元素
${A[@]} ##显示所有元素
echo ${A[*]} ##显示所有元素
echo ${A[@]} ##显示所有元素
${A[-2]} ##表示倒数第二个元素
echo ${#A[@]} ##显示倒数第一个元素
echo ${A[-1]} ##显示倒数第一个元素
echo ${A[-3]} ##显示倒数第三个元素
${A[@]:1:3} ##由元素1开始向后3个
${A[@]:1:3} ##显示第一个元素后三个
echo ${A[@]:3:2} ##由第三个元素开始向后两个
4.linux中命令的别名设定
alias xie=‘vim’ ##只针对当前窗口
alias ##查看
xie westos ##测试
~/.bashrc ##只针对当前用户
alias xie=’vim‘
source ~/.bashrc ##调用
su - luqq
xie westos ##不生效,只对当前用户生效
/etc/bashrc/ ##针对所有用户
tail -n2 /etc/bashrc
su - luqq
xie westos ##生效
删除:文件内删除,调用更新
vim ~/.bashrc
vim /etc/bashrc
source ~/.bashrc
unalies xie ##删除xie
-
编写创建用户脚本
1.判断是否添加用户列表
2.判断用户列表是否存在
3.判断用户是否存在
4.调用列表,调用第一行创建用户,调用第二行创建密码
-
适用范围:
$() ##只在shell中使用‘’##适用范围广
6.传参
1)直接利用命令执行结果
KaTeX parse error: Expected 'EOF', got '#' at position 9: ()|'' #̲#优先执行 TEST=host…(hostname)
2)脚本中的传参:
非交互模式:
vim westos.sh
#!/bin/bash
echo ‘$0’ is $0 ##脚本本身
echo ‘$1’ is $1 ##输出第一串字符
echo ‘$2’ is $2 ##输出第二串字符
echo ‘$3’ is KaTeX parse error: Expected 'EOF', got '#' at position 4: 3 #̲#输出第三串字符 echo '#’ is KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲ ##输出字符长度 echo…*’ is KaTeX parse error: Expected 'EOF', got '#' at position 6: * #̲#输出所有字符 echo '@’ is $@ ##输出所有字符
交互模式传参:
read -p ##打印相应字符
read -p "input: " WORD ##输入值赋给WORD
echo $WORD ##输出WORD的值
vim westos1.sh
#!/bin/bash
read -p "Please input word: " WORD ##输入值赋给变量
echo $WORD ##输出变量值
-s ##隐藏输入内容
test:查看文件类型
7.脚本函数
定义:
程序中的别名
test:检测系统中的用户
#!/bin/bash
ACTION()
{
read -p "please input username: " USERNAME
[ "\$USERNAME" = "exit" ]&&{
exit
}||{
id $USERNAME &> /dev/null &&{
echo "\$USERNAME is exit"
ACTION
}||{
echo "\$USERNAME is not exit"
read -p "please input password: " PASSWORD
useradd $USERNAME &> /dev/null &&{
echo "\$USERNAME is create"
echo passwd | passwd stdin $PASSWORD &> /dev/null
ACTION
}
}
}
}
ACTION
teacher版: