linux--shell编程(三)条件判断及算术运算

练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示有多少个这类用户;否则,就显示没有这类用户;

#!/bin/bash
#
grep ‘\<bash$‘ /etc/passwd &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; 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 0 ]; then
USER=`grep "\<bash$" /etc/passwd | head -1 | 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 0 ]; 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

shell中如何进行算术运算

A=3

B=6

1. let算术表达式

let C=$A+$B

2. $[算术表达式]

C=$[$A+$B]

3. $(())

C=$(($A+$B))

4. expr 算术表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用

C=`expr $A + $B`

exit:退出脚本

exit #

错误码可以是1-255,也可以省略

练习:写一个脚本
给定一个用户,获取其密码警告期限;
而后判断用户密码使用期限是否已经小于警告期限;
提示:计算方法,最长使用期限减去已经使用的天数即为剩余使用期限;

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

圆整:丢弃小数点后的所有内容#!/bin/bash#

#!/bin/bashUSER=rootid -u $USER &> /dev/nullRETVAL=$?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 / 86400`
SY=$[$MAXDATE  - $[$NOWDATEUSED - LATESTDATE]]
if [ $SY -gt $WARNDATE ];then
    echo "OK"
else
    echo "Warning"
fielse    exitfi
#!/bin/bash
USER=root
if ! grep "^$USER\>" /etc/shadow; then
    exit 1
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 / 86400`
SY=$[$MAXDATE  - $[$NOWDATEUSED - LATESTDATE]]
if [ $SY -gt $WARNDATE ];then
    echo "OK"
else
    echo "Warning"
fi

练习:写一个脚本
判定命令历史中历史命令的总条目是否大于1000;如果大于,则显示“Some command will gone.”;否则显示“OK”。

时间: 2024-10-17 10:09:30

linux--shell编程(三)条件判断及算术运算的相关文章

linux shell编程 之 条件判断

条件判断:

linux基础之shell编程(2)-条件判断,算数运算,测试

bash中如果实现条件判断? 条件测试类型 整数测试 字符测试 文件测试 条件测试的表达式 有三种 [ expression ] --方括号与表达式之间一定要有一个空格 [[ expression ]] test expression 整数测试 -eq: 测试两个整数是否相等 例:$A -eq $B -ne: 测试两个整数是否不等 不等为真,相等为假 -gt: 测试一个数是否大于另一个数:大于,为真:否则,为假: -lt: 测试一个数是否小于另一个数:小于,为真:否则,为假: -ge: 大于或等

Shell编程之条件判断与流程控制

一.条件判断式语句 1-1.概述 用来判断是与否,客观的而非主观判断,用于进行基本的管理 1-2.按文件类型判断 补充: && 命令1&&命令2 逻辑与(没有数据传递) 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2不会执行 || 命令1||命令2 逻辑或(没有数据传递) 当命令1执行不正确时,命令2才会执行 当命令1正确执行时,命令2不会执行 按文件类型判断 记住蓝色部分 两种判断格式: test –e /root/install.log [-e /ro

shell 编程if条件判断与if 真假判断

if条件判断与if真假判断 目录: 1.正确写法 2.错误写法 3.总结 一.正确写法 在编写shell脚本时,为简化代码的行号及结构的简约型,通常将命令执行结果和判断通过一条语句进行编写(在C语言编写程序时,经常遇到此种写法),如: [[email protected] ~]#touch test.sh if  useradd root &>/dev/null ; then    #如果用户添加成功,则不显示,否则显示用户添加失败     echo "user1 created

bash脚本编程之三 条件判断及算术运算

练习:写一个脚本,完成以下任务 1.添加5个用户,user1,--,user5 2.每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息 3.每个用户添加完成后,都要显示用户某某已经成功添加 !id user1  &>/etc/null && useradd user1 && echo "user1 " | passwd --stdin user1  &> /etc/null &&

linux shell中的条件判断

1. 退出状态 在Linux系统中,每当一条命令执行完成后,系统都会返回一个退出状态,这个状态被存放在$? 这个变量中,是一个整数值,我们可以根据这个值来判断命令运行的结果是否正确. 通常情况下,退出状态值为0,表示执行成功,不为0的时候表示执行失败. POSIX规定的退出状态和退出状态的含义: 0       运行成功 1-255   运行失败,脚本命令.系统命令错误或参数传递错误 126     找到了该命令但无法执行 127     未找到要运行的命令 128     命令被系统强行结束

Linux Shell脚本 之 条件判断

首先想到的就是if else条件判断语句了,下面给出一个全面的语句: if condition then condition is true execute all commands up to elif statement elif condition1 then condition1 is true execute all commands up to elif statement elif condition2 then condition2 is true execute all com

shell编程的条件判断

条件判断: 当条件判断的结果为真时$?的值为0, 如果判断的结果为假的则$?的值为非0 test即为判断命令!: ]:~$ test a.txt -nt b.txt  判断a.txt是否比b.txt文件新,这种为命令行格式. 但是在编程中常用的格式为: ]:~$ [ a.txt -nt b.txt ] 判断的条件与上面是一致的,所以test命令可以基本不用 文件类型判断 -e 判断文件是否存在 -d判断是否为目录文件 -f判断是否为普通文件 -L判断是否是连接文件 -s判断文件内是否有数据 数值

linux shell编程(三) if 和 for

if 条件判断: 单分支的if语句if 判断条件: then statement1fi双分支的if语句if 判断条件;then statement1 statementelse statement3fi多分支的if语句if 判断条件1:then statement1 elif 判断条件2:then statement2 elif 判断条件3:then statement3 else statement4fi for循环for 变量 in 列表;do 循环体 done