天天看點

bash之三 腳本練習以及算術運算

練習:寫一個腳本

判斷目前系統上是否有使用者的預設shell為bash;

    如果有,就顯示有多少個這樣的使用者,否則就顯示沒有這類使用者

#!/bin/bash

acount=`grep "\<bash$" /etc/passwd |wc -l`

if [ $acount -gt 0 ];then

echo "there have $acount such users"

else

echo "no  such  users"

fi

    給定一個檔案,比如/etc/inittab

    判斷這個檔案中是否有空白行

    如果有,則顯示其空白行數;否則,顯示沒有空白行;

i=` grep  "^$"  /etc/inittab|wc -l`

if [ $i -gt 0 ];then

echo "there are $i blank lines"

echo "no blank lines"

    給定一個使用者,判斷其UID與GID是否相同

    如果一樣,就顯示此使用者為“good guy”;否則顯示為“bad guy”;

[ `id -u user1`  -eq  `id -g user1 ` ]&& echo  'good guy' ||echo "bad guy "

    給定一個使用者,擷取起密碼警告期限;

    而後判斷使用者最近一次修改密碼時間距其最長使用期限是否已經小于警告期限;

    如果小于。則顯示“warning”;否則,就顯示“ok”;

        提示:算數運算的方法$[$A-$B],表示變量A的值減去變量B的值

if ! id $1 &>/dev/null;then 

echo  "user $1 no exists!"

wtime=`grep "$1" /etc/shadow|cut  -d:  -f6`

ctime=`grep "$1" /etc/shadow|cut  -d:  -f3`

utime=`grep "$1" /etc/shadow|cut  -d:  -f5`

now=`date +%s/86400|bc`

ltime=$[$utime-$[$now-$ctime]]

if [ $ltime -lt $wtime ];then

echo "warning!"

echo "ok"

    判定指令曆史中曆史指令的總條目是多少?

[root@logstach ~]# history |tail -1|cut -d' ' -f3

568

        注意:這裡不能使用history |wc -l 來計算,因為曆史指令最多能存儲環境變量HISTSIZE的大小,當超過時則會溢出,我們題目的意思是要統計已經使用過的曆史指令。

shell中如何進行算數運算:

A=3

B=7

1、 let 算數運算表達式

        let  C=$A+$B

2、 $[算術運算表達式]

        $[$A+$B]

3、 $((算術運算表達式))

        $(($A+$B))

4、 expr 算術運算表達式、表達式中各操作以及運算符之間必須有空格,且指派時需要指令引用

    c=`expr $A +  $B `

本文轉自biao007h51CTO部落格,原文連結:http://blog.51cto.com/linzb/1732473 ,如需轉載請自行聯系原作者