shell编程(三)之条件判断(if语句)
练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示有多少个这类用户;否则,就显示没有这类用户;
#!/bin/bash
#
grep '\<bash$' /etc/passwd &> /dev/null
RETVAL=$?
if [ $RETVAL -eq ]; then
USERS=`grep "\<bash$" /etc/passwd | wc -l`
echo "hava $USERS users use default bash"
else
echo "没有默认使用bash的用户"
fi
练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示其中一个的用户名;否则,就显示没有这类用户;
#!/bin/bash
#
grep '\<bash$' /etc/passwd &> /dev/null
RETVAL=$?
if [ $RETVAL -eq ]; then
USER=`grep "\<bash$" /etc/passwd | head - | cut -d: -f1`
echo "user $USER use default bash"
else
echo "没有默认使用bash的用户"
fi
练习:写一个脚本
给定一个文件,比如/etc/inittab
判断这个文件中是否有空白行;
如果有,则显示其空白行数;否则,显示没有空白行。
#!/bin/bash
grep "^$" /etc/inittab &> /dev/null
RETVAL=$?
if [ $RETVAT -eq ]; then
echo "没有空白行"
else
NUM=`grep "^$" /etc/inittab | wc -l`
echo "有$NUM空白行"
fi
练习:写一个脚本
给定一个用户,判断其UID与GID是否一样
如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”。
#!/bin/bash
#
USERNAME="user1"
USERID=`id -u $USERNAME`
GROUPID=`id -g $USERNAME`
if [ USERID -eq GROUPID ]; then
echo "good guy"
else
echo "bad guy"
fi
#!/bin/bash
#
USERNAME=user1
USERID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f3`
GROUPID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f4`
if [ USERID -eq GROUPID ]; then
echo "good guy"
else
echo "bad guy"
fi
练习:写一个脚本
给定一个用户,获取其密码警告期限;
而后判断用户密码使用期限是否已经小于警告期限;
提示:计算方法,最长使用期限减去已经使用的天数即为剩余使用期限;
如果小于,则显示“Warning”;否则,就显示“OK”。
expr : 圆整:丢弃小数点后的所有内容#!/bin/bash#
#!/bin/bash
USER=root
id -u $USER &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
WARNDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f6`
LATESTDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f3`
MAXDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f5`
MILLS=`date +%s`
NOWDATEUSED=`expr $MILLS / `
SY=$[$MAXDATE - $[$NOWDATEUSED - LATESTDATE]]
if [ $SY -gt $WARNDATE ];then
echo "OK"
else
echo "Warning"
fi
else
exit
fi
#!/bin/bash
USER=root
if ! grep "^$USER\>" /etc/shadow; then
exit
fi
WARNDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f6`
LATESTDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f3`
MAXDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f5`
MILLS=`date +%s`
NOWDATEUSED=`expr $MILLS / `
SY=$[$MAXDATE - $[$NOWDATEUSED - LATESTDATE]]
if [ $SY -gt $WARNDATE ];then
echo "OK"
else
echo "Warning"
fi
练习:写一个脚本
判定命令历史中历史命令的总条目是否大于1000;如果大于,则显示“Some command will gone.”;否则显示“OK”。
#!/bin/bash
SUM=`history | tail -1 | cut -d' ' -f3`
if [ $SUM -lt 50 ]; then
echo 'Some command will gone'
else
echo 'ok'
fi
练习:写一个脚本
给定一个文件:
如果是一个普通文件,就显示之;
如果是一个目录,亦显示之;
否则,此为无法识别之文件;

#!/bin/bash
#
FILE=/etc/rc.d/sysinit if [ ! -e $FILE ]; then
echo 'no such file'
exit 6
elif [ -d $FILE ]; then
echo 'this is a directory'
elif [ -f $FILE ]; then
echo 'this is a common file'
else
echo 'unknow file'
fi

练习:写一个脚本
给脚本传递两个参数(整数);
显示此两者之和,之乘积;

#!/bin/bash
#if [ $# -eq 0 ]; then
echo '没有传递参数'
elif [ $# -lt 2 ]; then
echo '需要两个参数'
else
SUM1=$[$1+$@]
SUM2=$[$1*$2]echo "和为$SUM1,积为$SUM2"
fi
写一个脚本:
1.添加10个用户user1到user10, 密码同用户名;但要求只有用户不存在的情况才能添加;

#!/bin/bash
#
for I in {1..10}; do
if ! id user$I &>/dev/null; then
useradd user$I
echo "user$I" | passwd --stdin user$I
else
echo "user$I exists" fi
done

删除上述十个用户

#!/bin/bash
#
for I in {1..10}; do
if id user$I &> /dev/null; then
userdel -r user$I &> /dev/null
echo "user$I deleted"
else
echo "user$I not exists"
fi
done

扩展: 根据输入参数进行添加或删除指定几个用户,

#!/bin/bash
2 #
3 if [ $# -lt 1 ]; then
4 echo "Usage: No ARGs"
5 fi
6 if [ $1 == "--add" ]; then
7 for I in `echo $2 | sed 's/,/ /g'`; do
8 if id $I &> /dev/null; then
9 echo "$I exists"
10 else
11 useradd $I
12 echo $I | passwd --stdin $I &> /dev/null
13 echo "Add $I finished"
14 fi
15 done
16 elif [ $1 == "--del" ]; then
17 for I in `echo $2 | sed 's/,/ /g'`; do
18 if ! id $I &> /dev/null; then
19 echo "$I not exists"
20 else
21 userdel -r $I
22 echo "Delete $I finished"
23 fi

shell编程(三)之条件判断(if语句)的更多相关文章
- shell编程基础(3)条件判断语句
1,带参数的shellscript #this is program build 5.11 to test shell script ############ cxz ####### 5.11 ### ...
- Shell编程中的条件判断(条件测试)
Shell中的条件判断(测试)类型: 1) 整数测试 2) 字符测试 3) 文件测试 条件测试的表达式: (注: expression 与 [] 之间空格不能省略) [ expressi ...
- Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)
一.概述 在上一篇里讲到了shell脚本,shell按照命令在脚本中出现的顺序依次进行处理,对于顺序操作已经足够了,但许多程序要求对shell脚本中的命令加入一些逻辑流程控制,这样的命令通常叫做 结构 ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
- Mariadb MySQL逻辑条件判断相关语句、函数使用举例介绍
MySQL逻辑条件判断相关语句.函数使用举例介绍 By:授客 QQ:1033553122 1. IFNULL函数介绍 IFNULL(expr1, expr2) 说明:假如expr1 不为NULL,则 ...
- linux Shell中常用的条件判断
linux Shell中常用的条件判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d ...
- shell编程学习笔记(八):Shell中的if条件判断
编程语言中都有条件判断,shell编程也不例外,下面我们来看一下shell中应该怎么使用if条件判断 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts ...
- Shell脚本 (三) 条件判断 与 流程控制
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 六.条件判断 1.基本语法 [ condition ](注意condition 前后要有空格) 注意:条 ...
- shell编程学习笔记(九):Shell中的case条件判断
除了可以使用if条件判断,还可以使用case 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script08.sh 开始编写scrip ...
随机推荐
- Codeforces Round #323
div1 C 这题的是给了一个无限循环的子数组,问有多少个 (l,s)l代表起点s代表长度的循环串,使得所有的在原串中的每位都小于等于另外这个串(l<=n,1<=s<n) 像这样,我 ...
- sitecore系统教程之部署架构方式分析
当您第一次部署Sitecore体验平台时,您可以选择三种主要体系结构选项: 内部部署服务器解决方案 混合服务器方案 云服务器解决方案 您是选择将Sitecore作为云,内部部署还是混合解决方案运行,取 ...
- sitecore系统教程之内容编辑器中创建项目
在内容编辑器中创建新项目时,必须先在内容树中选择一个项目,以指示新项目的位置.您可以创建一个新项目作为您选择的项目的兄弟或子项目: 兄弟是您在与所选项目相同的级别创建的项目. 子项是您在所选项下创建的 ...
- 【Linux学习四】正则表达式
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.grep:显示匹配行v:反显示e:使用扩展正则表达式E:不使用正则 ...
- arm cortex-m0plus源码学习(三)GPIO
概述: Cortex-m0的integration_kit提供三个GPIO接口,其中GPIO0传输到外部供用户使用,为EXTGPIO:GPIO1是内核自己的信号,不能乱改,会崩掉:GPIO2是一些中断 ...
- 仿照admin实现一个自定义的增删改查的组件
1.首先,创建三个项目,app01,app02,stark,在settings里边记得配置.然后举例:在app01的model里边写表,用的db.sqlite3,所以数据库不用再settings里边配 ...
- RESTful API 设计指南,RESTful API 设计最佳实践
RESTful API 设计指南,RESTful API 设计最佳实践 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). ...
- Django 应用 静态文件配置
Django 应用 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- ajax实现图片上传
1.创建formData表单,模拟表单传递数据(formData有兼容性问题) var formData = new FormData();2.获取到相应的元素 var jobName = $(&qu ...
- Python进阶【第十篇】模块(上)
·一.模块 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这 ...