学习笔记-5.3 shell编程2

5.3 shell编程2

条件判断:

如果用户不存在

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

否则

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

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 显示“用户删除完成”类的信息

时间: 2024-08-26 19:07:59

学习笔记-5.3 shell编程2的相关文章

linux学习笔记四(shell编程)

前言:最近在学习shell编程,shell编程是一个很强大的编程语言. 目的:方便今后复习. 内容:1.简单的回顾一下编程语言                 1)编程语言:机器语言,汇编语言,高级语言.                 2)编程语言有静态和动态的区分.                             区别:静态语言是一种编译性的语言,要提前知道变量的格式,进过完整的编译之后才能运行,典型的静态语言包括:C.C++.JAVA.C#.                    

linux学习笔记四(shell编程二)

写一个脚本: 计算100以内所有能被3整除的正整数的和: 取模,取余:% 3%2=1 100%55=45 #!/bin/bash let SUM=0 for I in {1..100};do         TMP=$[$I%3]         if [ $TMP -eq 0 ];then                 SUM=$[$SUM+$I]         fi done echo "SUM is $SUM" 写一个脚本: 计算100以内所有奇数的和以及所有偶数的和:分别显

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

Hbase学习笔记之一 | Hbase Shell命令篇

最近在XX项目的测试过程中,接触到一些HBase的东西,希望能站在测试的角度,把过程记录下来,期望对快速了解它有点帮助.作为一个初次接触它的人来说,需要迫切掌握其中基本的概念,这里就不赘述了. HBase Shell是HBase提供的便捷的访问方式,首先你需要搭建HBase的环境,可以参考 http://hbase.apache.org/book/quickstart.html 和http://hbase.apache.org/book/notsoquick.html. 1.进入Hbase Sh

Linux 程序设计学习笔记----终端及串口编程及实例应用

转载请注明出处,http://blog.csdn.net/suool/article/details/38385355. 部分内容类源于网络. 终端属性详解及设置 属性 为了控制终端正常工作,终端的属性包括输入属性.输出属性.控制属性.本地属性.线路规程属性以及控制字符. 其在系统源代码的termios.h中定义(具体的说明文档http://pubs.opengroup.org/onlinepubs/7908799/xsh/termios.h.html),其结构体成员主要是 Thetermios

转 网络编程学习笔记一:Socket编程

网络编程学习笔记一:Socket编程 “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下:

linux基础学习-17-linux操作系统之Shell编程基础讲解

1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚本的内容.每一个合格的Linux系统管理员或运维工程师,都需要熟练的编写Shell脚本语言,并能够阅读系统及各类软件附带的Shell脚本内容.只有这样才能提升运维人员的工作效率,适应日益复杂的工作环境,减少不必要的重复工作,从而为个人的职场发展奠定较好的基础. 1.2 学好Shell编程所需的基础知识

shell脚本学习笔记:通过shell实现linux用户管理和监控

学习shell做的第一个脚本,感谢云知梦李强强老师的shell编程教程 创建shell脚本文件: touch menu.sh touch index.sh touch welcome.sh 赋予脚本文件可执行权限: chmod a+x menu.sh index.sh welcome.sh menu.sh #!/bin/bash #menu.sh function menu(){ title="My Home" name="Randy" time=`date +%Y

RHCE 学习笔记(38 ) - Shell

Shell脚本的参考书从基础到高级可以找几百本出来,豆子这里过为了整个学习笔记的完整性,还是厚颜把最最基本的语法回顾一遍.最基本包括变量,比较,运算符,条件语句,循环语句. 变量分为本地变量,环境变量,位置变量 首先看看本地变量, 变量名=值的方式赋值,不过只在当前的shell里面有效 比如,子shell里面就无法识别了 可以通过export的方式配置环境变量,这样子shell里面也可以识别 不过上面的配置只是临时生效,重启就没了 可以通过修改配置文件的方式永久生效.登录家目录的时候,会自动加载