1、编写脚本 createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就 显示其存在,否则添加之。并设置初始密码为123456,显示添加的用户的id号等信息,在此新用户第一 次登录时,会提示用户立即改密码,如果没有参数,就提示:请输入用户名

shell编程流程控制练习_bash脚本

#!/bin/bash
read -p "请输入用户名:" USER_NAME
if [ -n "$USER_NAME" ] ; then #判断用户名变量是否为空,如果不为空才执行下方嵌套if
if useradd $USER_NAME &>/dev/null ; then #判断执行useradd命令是否成功,成功后继续执行密码相关
echo "$USER_NAME:123456" | chpasswd;passwd -e $USER_NAME;id $USER_NAME
else #useradd执行失败,则表示用户名存在
echo "$USER_NAME 已存在"
fi
else #变量为空
echo "请输入正确用户名"
fi
优化点:对用户名的可以做一次正则匹配,再嵌套一次if语句 [[ ]]

shell编程流程控制练习_判断用户_02

2、编写脚本 filetype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)

shell编程流程控制练习_初始化脚本_03

#!/bin/bash
read -p "请输入文件路径:" FILEPATH
if [ -e "$FILEPATH" ] ; then
if [ -f "$FILEPATH" ] ; then
echo "$FILEPATH normal"
elif [ -d "$FILEPATH" ] ; then
echo "$FILEPATH directory"
elif [ -h "$FILEPATH" ] ; then
echo "$FILEPATH link"
else
echo "$FILEPATH other"
fi
else
echo "请输入正确文件"
fi
待优化点 -h判断链接文件失效,/bin是链接文件判断为目录文件,可以在 [ -d ]再加一层使用 fiel命令的if判断


#优化版本(使用ls去判断,不能使用ll,因为ll是别名,脚本中不能使用别名)
read -p "请输入文件路径:" FILEPATH
if [ -e "$FILEPATH" ] ; then
FILETYPE=`ls -ld $FILEPATH | cut -b 1`
case $FILETYPE in
"-")
echo "$FILEPATH is normal"
;;
"d")
echo "$FILEPATH is directory"
;;
"l")
echo "$FILEPATH is link"
;;
*)
echo "$FILEPATH is other"
;;
esac
else
echo "请输入正确文件"
fi

shell编程流程控制练习_判断用户_04

3、编写脚本 ​​reset.sh​​,实现系统安装后的初始化环境,包括:1、别名 2、环境变量,如PS1等 3、安装常用软件包,如:tree5、实现固定的IP的设置,6、vim的设置等

#!/bin/bash
echo -e "\E[1;31m\
1、别名
2、环境变量
3、安装常用软件
4、实现固定ip
5、vim设置\e[0m"
read -p "请选择(1,2,3,4,5):" CHOICE
case $CHOICE in
1)
echo "执行 .\alise.sh"
;;
2)
echo ".\ENV.sh"
;;
3)
echo ".\YUM.sh"
;;
4)
echo ".\IP.sh"
;;
5)
echo ".\VIM.sh"
;;
*)
echo "请输入正确选项"
;;
esac

shell编程流程控制练习_文件类型_05