shell的脚本练习——case语句、用户管理脚本

1.case语句

(1)语法结构

case var in
pattern 1)
	command 1
pattern 2)
	command 2
*)
	command 3
	;;
	esac

(2)示例

模拟多任务界面,当执行程序时先显示总菜单,然后进行选择后做相应维护监控操作
——请选择——
h 显示命令的帮助
f 显示磁盘分区
d 显示磁盘挂载
m 显示内存使用
u 显示系统负载
q 退出程序
————————


 #!/bin/bash
 function menu(){
     echo "
       h 显示命令的帮助
       f 显示磁盘分区
       d 显示磁盘挂载
       m 显示内存使用
       u 显示系统负载
       q 退出程序
  
    "     
  }
  
  menu
  while true
  do
    read -p "请输入你要操作的选项(h|f|d|m|u|q): " choice
    case $choice in
      h)
        menu
        ;;
      f)
        echo "*********磁盘分区信息"        
        blkid | cut -d: -f1
        ;;
      q)
        echo "程序正在退出,欢迎下次使用......"
        exit 0
        ;;
      m)
        echo "*********内存信息"
        free -m
        ;;
      *)
        echo "请通过h查看帮助信息"
        ;;
    esac
  
  done

在这里插入图片描述在这里插入图片描述

2.函数

shell 中允许将一组命令集合或语句形成一段可用代码,称为shell函数
给这段代码起个名字称为函数名,后续可以直接调用该段代码的功能

(2)函数定义

<1>

函数名()
{
	函数体(一堆命令的集合,来实现某个功能)
}

<2>

function 函数名()
{
	函数体(一堆命令的集合,来实现某个功能)
	echo hello
	echo world
}

有颜色的字符串输出:

RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
BLUE="\033[34m"
PINK="\033[35m"
END="\033[0m"

print_color_string(){
        color=$1
        string=$2
        case $color in
                red)
                        echo -e "$RED $string $END"
                        ;;
                green)
                        echo -e "$GREEN $string $END"
                        ;;
                yellow)
                        echo -e "$YELLOW $string $END"
                        ;;
                *)
                        echo $string
                        ;;
        esac
}

print_color_string 'red' 'hello world'
print_color_string 'green' 'hello world'

用户管理脚本

需求如下:

  1. 执行 users_create.sh userlist passlist
  2. 建立 userlist 列表中的用户
  3. 设定 userlist 列表中的密码为 passlist 列表中的密码
  4. 当脚本后面跟的文件个数不足两时,报错
  5. 当文件行数不一致时报错
  6. 当文件不存在时报错
  7. 当用户存在时报错
#!/bin/bash
##判断当前用户是否为root
[ `id -u` -eq 0 ] || echo "ERROR:this script must run as root"
##判断是否指定两个文件
[ $# -eq 2 ] || {
	echo "ERROR:please input file and password file"
	exit 1
}
[ -e $1 -a -f $1 ] || {
	echo "未指定用户文件"
	exit 1
}
[ -e $2 -a -f $2 ] || {
	echo "未指定密码文件"
	exit 1
}
##判断userfile和passfile中的行数是否匹配
N=`awk 'BEGIN{n=0}{n++}END{print n}' userfile`
M=`awk 'BEGIN{m=0}{m++}END{print m}' passfile`
##或
##N=`wc -l $1 | cut -d '' -f1`
##M=`wc -l $2 | cut -d '' -f1`
[ "$N" != "$M" ] && {
	echo "用户与密码行数不匹配"
	exit	
}
##
for i in `seq 1 $N` ##1到N循环
do
#创建变量UserName和PassName
	UserName=`sed -n ${i}P userfile`  ##userfile的第几行
	PassName=`sed -n ${i}P passfile`
#判断系统中是否已经存在该用户,如果存在,报错,反之则进行创建
	if id $UserName > /dev/null 2>&1
	then 
		echo "$UserName 已经存在"
		continue
	else
		useradd $UserName
		echo $PassName | passwd --stdin $UserName
		echo "$UserName 创建成功"
	fi 
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值