重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

学习笔记-5.3shell编程2-创新互联

5.3 shell编程2

创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、网站建设、外贸网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元苏尼特左做网站,已为上家服务,为苏尼特左各地企业和个人服务,联系电话:028-86922220

条件判断:

  如果用户不存在

    添加用户,给密码并显示添加成功

  否则

    显示如果已经存在,没有添加

bash中如何实现条件判断?

条件测试类型:

  整数测试

  字符测试

  文件测试

条件测试的表达式:

  [ expressopm ] 前后一定有空格

  ` expressopm `

  test expression

整数比较:

  -eq:测试两个整数是否相等;相等为真0比如 $A -eq $B

  -ne:测试两个整数是否不等;不等,为真0,相等,假

  -gt:测试一个数是否大于另一个数:大于,为真

  -lt:测试一个数是否小于另一个数

  -ge:大于或等于

  -le:小于或等于

命令间的逻辑关系:

  逻辑与: &&

    第一个条件为假时,第二条件不用再判断,最终结果已经有:

    第一个条件为真时,第二条件必须得判断

  逻辑或: ||

id user1 &> /dev/null && echo "Hello,student."

如果用户user6不存在,就添加用户user6

! id user6 && useradd user6

id user6 || useradd user6

变量名称:只能包含字母、数字和下划线,并且不能以数字开头,不应该跟

     系统中已有的环境变量重名

     最好做到见名知义

nano second.sh

#!/bin/bash

LINES = 'wc -l /etc/inittab'

#echo $LINES

FINLINES = 'echo $LINES | cut -d ' ' -f1'

#echo $FINLINES

[ $FINLINES -gt 100 ] && echo "/etc/inittab is a big file."

 ||  echo "/etc/inittab is a small file."

如果用户存在,就显示用户已存在;否则,就添加此用户:

 id user1 && echo "user1 exists." || useradd user1

如果用户不存在,就添加:否则,显示其已经存在

! id user1 && useradd user1 ||  echo "user1 exists."

如果用户不存在,添加并且给密码,否则,显示其已经存在

! id user1 && useradd user1 && echo "user1" | passwd --stdin user1 ||

 echo "user1 exists."

练习,写一个脚本,完成以下要求:

1 添加3个用户user1,user2,user3;但要先判断用户是否存在,

 不存在而后再添加

2 添加完成后,显示一共添加了几个用户:当然,不能包括因为事先

 存在而没有添加的

3 最后显示当前系统上共有多少个用户

 nano adduser.sh

#!/bin/bash

! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd

 --stdin user1 &> /dev/null || echo "user1 exists."

! id user2 &> /dev/null && useradd user2 && echo "user2" | passwd

 --stdin user2 &> /dev/null || echo "user2 exists."

! id user3 &> /dev/null && useradd user3 && echo "user3" | passwd

 --stdin user3 &> /dev/null || echo "user3 exists."

USERS = 'wc -l /etc/passwd | cut -d: -f1'

echo "$USERS users."

如果 UID为0:那么

  显示为管理员

否则

  显示为普通用户

NAME = user16

USERID = `id -u $NAME` (~下的反引号) 命令引用表示命令的执行结果

if[ $USERID -eq 0 ];then

 echo "Admin"

else

 echo "common user."

fi

反引号引用表示命令的执行结果

没有反引号表示命令的执行状态(是否成功)

if id $NAME;then

练习 写一个脚本,完成以下要求:

给定一个用户:

 1 如果其UID为0,就显示此为管理员

 2 否则,就显示其为普通用户

nano third.sh

#!/bin/bash

#

NAME = user1

USERID =`id -u $NAME`

[ $USERID -eq 0 ] && echo "Admin" || echo "Common user."

条件判断,控制结构:

单分支if语句

if 判断条件;then (then写下一行,分号可以省略)

  statement1

  statement2

  ...

fi

双分支的if语句:

if 判断条件;then

  statement1

  statement2

  ...

else

  statement3

  statement4

  ...

fi

nano tt.sh

#!/bin/bash

#

NAME = user1

if id $NAME &> /dev/null;then

  echo "$NAME EXISTS."

else

  useradd $NAME

  echo $NAME | passwd --stdin  $NAME &> /dev/null

  echo "Add $NAME finished."

fi

练习:写一个脚本,完成以下任务

1 使用一个变量保存一个用户名

2 删除此变量中的用户,且一并删除其家目录

3 显示“用户删除完成”类的信息

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站题目:学习笔记-5.3shell编程2-创新互联
本文地址:http://cqcxhl.cn/article/hshhc.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP