shell使用方式:
交互式 —— 命令行
人工干预、智能化程度高
逐条解释执行、效率低
非交互式 —— 脚本
需要提前设计、智能化难度大
批量执行、效率高
方便在后台静悄悄地运行
[root@svr7 ~]# cat /etc/shells //查看所有解释器
[root@svr7 ~]# sh //切换成sh解释器
sh-4.2# ls //利用sh解释器输入命令
sh-4.2#exit //退出sh解释器
[root@svr7 ~]#yum -y install ksh //安装新解释器
[root@svr7 ~]#ksh //进入新解释器
shell脚本编写规范
1,声明解释器
#!/bin/bash
2,编写注释
#可以描述脚本功能、变量作用等信息
3,执行指令
ls
cd
。。。
。。。
#!/bin/bash
#搭建yum软件仓库
mkdir /abc
mount /dev/cdrom /abc
rm -rf /etc/yum.repos.d/*.repo
echo "[abc]
name=abcabc
baseurl=file:///abc
enabled=1
gpgcheck=0" > /etc/yum.repos.d/abc.repo
#!/bin/bash
#搭建网站
yum -y install httpd
echo "web-test~~" > /var/www/html/index.html
systemctl restart httpd
#!/bin/bash
yum -y install vsftpd &> /dev/null //将不需要的信息扔黑洞
systemctl restart vsftpd
systemctl enable vsftpd
变量的种类:
#!/bin/bash
echo $1
echo $2
echo $3
echo $*
echo $#
echo $$
echo $?
编写脚本: 创建用户tom,设置密码为123456
#!/bin/bash
read -p "请输入用户名: " u
useradd $u
read -p "请输入密码: " n
echo $n | passwd --stdin $u
再次改良脚本:
#!/bin/bash
read -p "请输入用户名" u
useradd $u
stty -echo
read -p "请输入密码" n
stty echo
echo "$n" | passwd --stdin $u
3,使用export发布全局变量
局部变量 仅仅在当前解释器进程中使用的变量
全局变量 解释器产生的子进程中也可以使用的变量
a=10 //创建变量
export a //将已有变量发布为全局效果
export b=20 //创建变量的同时发布为全局效果
export -n b //将全局变量恢复为局部变量
注意,测试时要在父进程创建变量,然后可以执行bash进入
子进程测试效果,如果要返回父进程要执行exit指令