练习:

1.写一个脚本

判断当前系统上是否有用户的默认shell为bash

  如果有,就显示其中一个的用户名;否则,就显示没有这类用户。

 #!/bin/bash
grep "bash$" /etc/passwd &> /dev/null
NAME=$?
if [ $NAME -eq ];then
AUSER=`grep "bash$" /etc/passwd | cut -d: -f1 | head -`
echo "$AUSER is one of such user!"
else
echo "no such user~~!!!"
fi # grep "bash$” 必须锚定,否则取不到返回值,
#grep "\<bash$" ,锚定行尾,词首

bash_user

2.写一个脚本

给定一个文件,比如/etc/inittab

判断这个文件中是否有空白行;如果,有则显示其空白行数;否则,显示没有空白行。

 #!/bin/bash
#
FNAME=/etc/inittab
if [ ! -e $FNAME ];then ## -e 判断文件是否存在
echo "NO such file!~"
exit
fi #grep "^$" $FNAME &> /dev/null
#AB=$? if grep "^$" $FNAME &> /dev/null;then ##直接调用结果判断
TT=`grep "^$" $FNAME | wc -l`
echo " $TT white line "
else
echo "NO white line"
fi 常用的条件测试有三种:
整数测试: -gt ,le ,ne, eq,ge,lt 文件测试:-e file: 测试文件是否存在
-f file: 测试文件是否为普通为文件
-d file:测试指定路径是否为目录
-r , -w , -x 是否有读写执行权限 例: [ -e /etc/inittab ]
[ -x /etc/rc.d/rc.sysinit ]

if-file

3.写一个脚本

给定一个用户,判断其UID与GID是否一样

如果一样,就显示此用户为“good guy" ;否则,就显示此用户为”bad guy".

注:不使用id命令获得其id号。

 #!/bin/bash
#
NAME=abcd
if ! grep "^$NAME\>" /etc/passwd &> /dev/null;then #判断用户是否存在
echo "NO $NAME user!"
exit
fi USID=`grep "^$NAME\>" /etc/passwd | cut -d: -f3`
GRID=`grep "^$NAME\>" /etc/passwd | cut -d: -f4`
if [ $USID -eq $GRID ];then
echo "good guy"
else
echo "bad guy"
fi

if_user

4.写一个脚本

给定一个用户,获取其密码警告期限;

而后判断用户最近一次修改密码时间距其最长使用期限是否已经小于警告期限;

如果小于,则显示“Warning”,否则,就显示“OK” 。

 #/bin/bash
#
NAME=user1
DA=`date +%s`
YD=`grep "^$NAME" /etc/shadow | cut -d: -f3`
GD=`grep "^$NAME" /etc/shadow | cut -d: -f5`
JD=`grep "^$NAME" /etc/shadow | cut -d: -f6`
TD=`expr $DA/`
YYD=$[$GD-$[$TD-$YD]] if [ $YYD -lt $JD ];then
echo "Warning!!"
else
echo "OK!~"
fi 如果查看/etc/shadow文件存放的特殊帐号信息如下:
name:!!:::::::
每一行给一个特殊帐户定义密码信息,每个字段用 : 隔开。
字段 定义与这个 shadow 条目相关联的特殊用户帐户。
字段 包含一个加密的密码。
字段 自 // 起,密码被修改的天数
字段 密码将被允许修改之前的天数( 表示“可在任何时间修改”)
字段 系统将强制用户修改为新密码之前的天数( 表示“永远都不能修改”)
字段 密码过期之前,用户将被警告过期的天数(- 表示“没有警告”)
字段 密码过期之后,系统自动禁用帐户的天数(- 表示“永远不会禁用”)
字段 该帐户被禁用的天数(- 表示“该帐户被启用”)
字段 保留供将来使用 整数比较:
-eq : 测试两个整数是否相等;比如 [ $A -ep $B ]
-ne : 测试两个整数是否不等,不等为真,相等为假
-gt : >
-lt : <
-ge: >=
-le : <= shell 中如何做算术运算:
.let 算术运算表达式 let c=$A+$B
. $[ 算术运算表达式 ]
. $((算术运算表达式))
. expr 算术运算表达式,表达式中各运算符之间要有空格,反号
c=`expr $A + $B`

ifuser-shell

5.写一个脚本

判定命令历史中历史命令的总条目是否大于1000,

如果大于,则显示“Some command" ,否则显示”OK“

 #/bin/bash
#
NOBM=`history | tail - | cut -d' ' -f2`
if [ $NOBM -gt ];then
echo "Some command!"
else
echo "OK!!"
fi

sh1.shell脚本练习的更多相关文章

  1. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  2. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  3. shell脚本规划化模板

    shell脚本规划化模板 Linux运维过程中,shell脚本是不可缺少的工具,但是每个运维人员编程的习惯都不一样,很多时候就是实现某个功能,写出来的脚本都是烂七八糟的.脚本必须规范化,应该从以后几个 ...

  4. Shell脚本编程30分钟入门

    Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...

  5. Linux Shell脚本逻辑操作符简介

    在写程序时,会用到条件判断,测试条件是否成立.很多时候,判断条件是多个的,这个时候需要用到逻辑操作符.shell脚本中常用的有哪些逻辑操作符呢? 1.逻辑与: -a 格式: conditon1 -a ...

  6. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  7. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  8. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  9. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

随机推荐

  1. js中类型识别的方法

    第一种方法typeof typeof是一种运算符,它的值有以下几种 <!DOCTYPE html> <html lang="en"> <head> ...

  2. 个人作业-Week1

    问题1:程序员的优劣是否在软件开发中已经不重要了??用户实际关心的 外形,使用的乐趣和效率,自我形象,个人满足感,回忆,这么多条中,仅有效率与代码有关,而实际上用户比起效率却更在意其他这些“幺蛾子”. ...

  3. 如何给frame标签的src属性以及a标签的href属性自动设值

    <frame src="" id="main" name="main" marginwidth="0" margi ...

  4. CodeForces - 696B Puzzles

    http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...

  5. ubuntu安全卸载移动硬盘(safely remove)

    移动磁盘不能安全卸载.在网上找到的资料如下: sudo apt-get install udisks sudo umount /dev/sdb1 sudo udisksctl power-off -b ...

  6. 关于push数组,然后遍历数组遇到的坑,遍历显示函数

    我偷了个懒将点击的东西push进一个arr里,然后遍历显示在上面. 为啥子出现了上函数,什么鬼什么鬼.我检查很久都不晓得那里push进去的. 一个小时后,我想想要不看看arr里面的结构吧! 尼玛!为啥 ...

  7. 关于php编程的一些小技巧

    1. NULL,0和空的区分判断 (1)0与空的区分 <?php  $a = 0;if($a==''){ echo '此判断条件不能区分';}else{ echo '此判断条件可以区分';} ? ...

  8. linux查看MySQL版本的四种方法

    1 在终端下执行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看 select version() 4 在mysql 里查看 s ...

  9. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  10. JavaScript基础(一)之语法、变量、数据类型

    1.JavaScript语法 ①区分大小写 ②弱类型变量 ③每行结尾分号可有可无 ④括号用于代码块 ⑤注释有两种方式(单行和多行注释) 2.JavaScrip变量 ①用Var声明,不要初始化 ②可以在 ...