Fork me on GitHub

shell练习

 1.添加6个用户,每个用户的密码同用户名,不显示添加密码的信息,并给显示添加用户成功信息。

 ①用户直接在脚本里写死  test1.sh

#!/bin/bash#脚本的第一行一定是这个脚本的声明,这里声明的是脚本的解释器。
# 用户可以有参数传过来,也可以直接定义一个变量。
U=’user1’ #声明变量,本地变量的声明直接变量名=值,无需export。这里选择单引号,因为user1是个字
符串,只需强引就行,双引号也行。
useradd $U #引用变量
#设置密码和用户名相同,但是设置完之后不显示passwd的执行结果。但是这个passwd会在控制台出现信息
,所以需要使用管道传入数据,并且重定向。
echo "$U" | passwd --stdin $U &>/dev/null #前一个命令的输出传给后一个命令的输入。
echo "success." #打印成功信息。

   ②用户当参数传递  test2.sh

#!/bin/bash
#
useradd $1 #这里是使用传递参数的方式,1代表1个参数,实际上$1是特殊变量$*的特例
echo "$1" |  passwd --stdin  $1 &>/dev/null
echo "Add user $1 success."

    ③执行

   脚本1的执行: sh test1.sh

  脚本2的执行: sh test2.sh username

  查看是否添加成功: cat /etc/passwd

     调试脚本执行:  sh -x /opt/shell/test2.sh

 

 

 2.写一个脚本,完成以下任务:第一,使用一个变量保存一个用户名;第二,删除此变量中的用户,且一并删除其家目录;第三,显示“用户删除成功”信息。

  ①编写脚本test3.sh

#!/bin/bash
U=$* #使用一个变量存储用户名
userdel $U #删除这个用户
rm -rf /home/$U #删除该用户的家目录
echo "delete user and ${U}home success." #打印成功信息

  ②执行脚本

sh test3.sh username #注意一定要有参数(要删除的用户),不然会删除整个/home目录
cat /etc/passwd #查看用户是否删除成功。
ls /home #查看用户的家目录是否删除成功

 

3.添加用户前先判断是否存在,如果存在就打印该用户已存在,并且退出。

  ①编写脚本test4.sh

#!/bin/bash
id $1 &>/dev/null && echo "User $1 exist" && exit 3 
#使用命令的执行状态作为逻辑判断。id $1 如果用户$1存在,则为0(真),#需要继续判断后面的,所以执行echo,并且退出脚本,不再
#创建该用户。退出,3是非0,当前脚本执行不成功。
 
useradd $1 #添加用户
id $1 &>/dev/null &&  echo "$1" |  passwd --stdin  $1 &>/dev/null 
#如果用户创建成功了,就执行后面的echo passwd添加密码。
echo "Add user $1 success."

   ②执行脚本

sh test4.sh user1

 

posted @ 2018-03-15 11:10  神雕爱大侠  阅读(183)  评论(0编辑  收藏  举报