条件测试:test 和 if
条件测试为真=0表示执行成功,条件测试为假执行失败则为其他数字
test $变量1=变量2
-d 测试是否为目录
-e 测试目标文件是否存在
-f 是否为文件
-r 是否可以读取
-w 是否可以写入
-x 是否可以执行
-z 是否为空
[ $变量1 = 变量2 ]
-eq 等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
-ne 不等于
逻辑运算符
= !=
[ 1 -eq 2 ] && echo $?
输出1
&& 与,上一条命令执行成功后再执行下一条命令
|| 或,上一条命令执行失败后再执行下一条命令
实验1:用test创建目录,文件的脚本,要求创建前文件或目录是否存在,创建时文件名不能为空,选择创建目录还是文件,而不是同时创建
#!/bin/bash
read -p "创建目录请输入1,创建文件请输入2,如要退出请输入3:" input
if [ $input -eq 1 ];then
read -p "请输入创建的目录名" a
test -z $a && echo 目录名称不能为空,请重新输入 && exit
test -e /root/CTMKJB/$a && echo 目录已存在 && exit
mkdir $a
echo "已创建目录$a"
ls
elif [ $input -eq 2 ];then
read -p "请输入创建的文件名与后缀" b
test -e /root/CTMKJB/$b && echo 文件已存在 && exit
touch $b
echo "已创建文件$b"
ls
elif [ $input -eq 3 ];then
echo "已退出"
exit
else
echo "请输入1或2,来创建目录或文件!!如要退出请输入3"
bash mk2.sh
fi
2,创建用户,设置密码,选择是否创建用户,测试用户是否存在,测试密码是否为空,两次密码相同,对新创建的用户密码进行备份
#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
RESET='\033[0m'
read -p "请输入用户名: " user
[ -e /home/$user ] && echo -e "${RED}用户已经存在${RESET}" && exit
read -s -p "请输入密码: " password
echo
read -s -p "再次输入密码: " password2
[ $password == $password2 ] && echo -e "${GREEN}密码校验成功${RESET}"
echo $password2 > password.txt
[ $password != $password2 ] && echo -e "${RED}密码不一致,请重新输入${RESET}" && exit
read -p "用户名与密码校验成功,是否创建用户 yes|no:" input
if [ $input == "yes" ];then
useradd $user
sleep 0.5
echo "$password2" | passwd $user --stdin
echo -e "${GREEN}用户已创建${RESET}"
sleep 0.5
echo -e "用户名: $user 密码: $password2" >> usr_backup.txt
sleep 1
echo -e "${GREEN}用户信息${RESET}"
tail -1 /etc/shadow
echo -e "${GREEN}用户列表${RESET}"
ls /home
else
echo "已退出"
fi
3,创建修改网卡脚本,有配置文件询问是否修改,无配置文件询问是否创建
read -p "请输入网卡名称:ens- " name
if [ -e /etc/sysconfig/network-scripts/ifcfg-ens$name ];then
read -p " 同名网卡已存在,是否修改配置文件信息 yes | no :" input
if [ $input == "yes" ];then
vim /etc/sysconfig/network-scripts/ifcfg-ens$name
else
exit
fi
else
read -p "无同名网卡,是否创建一个新的网卡配置文件 yes | no :" input
if [ $input == "yes" ];then
read -p "请输入IP地址:192.168.x.x " ip
read -p "请输入网关地址:192.168.x.x " gateway
read -p "请输入DNS地址:" dns
touch /etc/sysconfig/network-scripts/ifcfg-ens$name
echo "TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens$name
UUID=99091610-7b81-479e-9b14-26819532bad3
DEVICE=ens$name
ONBOOT=yes
IPADDR=$ip
PREFTX=24
GATEWAY=$gateway
DNS1=$dns
DNS2=8.8.8.8" > /etc/sysconfig/network-scripts/ifcfg-ens$name
cat /etc/sysconfig/network-scripts/ifcfg-ens$name
else
exit
fi
fi
4,安装apache脚本,检测是否有安装包,没有安装包退出脚本
if [ -e httpd-2.4.23.tar.gz ];then
read -p "找到Appach脚本文件,是否开始安装 yes | no :" input
if [ $input == "yes" ];then
tar -zxvf httpd-2.4.23.tar.gz -C /usr/src/
cd /usr/src/httpd-2.4.23/
sleep 0.5
rpm -ivh /media/Packages/apr-1.4.8-3.el7.x86_64.rpm
rpm -ivh /media/Packages/apr-devel-1.4.8-3.el7.x86_64.rpm
rpm -ivh /media/Packages/apr-util-1.5.2-6.el7.x86_64.rpm
rpm -ivh /media/Packages/expat-devel-2.1.0-8.el7.x86_64.rpm
rpm -ivh /media/Packages/libdb-devel-5.3.21-19.el7.x86_64.rpm
rpm -ivh /media/Packages/cyrus-sasl-devel-2.1.26-20.el7_2.x86_64.rpm
rpm -ivh /media/Packages/openldap-devel-2.4.40-13.el7.x86_64.rpm
rpm -ivh /media/Packages/apr-util-devel-1.5.2-6.el7.x86_64.rpm
rpm -ivh /media/Packages/pcre-devel-8.32-15.el7_2.1.x86_64.rpm
sleep 1
./configure --enable-so --prefix=/usr/local/httpd --enable-sockets --enable-cgi --enable-charset-lite
sleep 0.5
make
sleep 1
make install
sleep 0.5
/usr/local/httpd/bin/apachectl start
rpm -ivh /media/Packages/lynx-2.8.8-0.3.dev15.el7. x86_64.rpm
lynx 127.0.0.1
exit
fi
else
echo "未找到Appach脚本文件,即将退出脚本"
exit
fi

被折叠的 条评论
为什么被折叠?



