shell脚本-条件和循环

一. 条件

1. 判断用户是不是root

#!/bin/bash

test=$(env | grep USER | cut -d "=" -f 2)

if [ "$test" == "root" ]; then
    echo current login user is root
fi

if [ "$test" == "root" ]
    then
    echo i am root
fi

2. 判断磁盘容量大小

#!/bin/bash

rate=`df -h | grep "sdb1" | awk '{print $5}' | cut -d "%" -f 1`

echo $rate

if [ $rate -ge 4 ]
    then
        echo / if full
fi

3. 判断是不是目录

#!/bin/bash

read -t 30 -p "please input a dir: " dir

if [ -d "$dir" ]
    then
        echo "$dir is dir";
    else
        echo "no no no"
fi

4. 判断httpd运行状态, 如果stop, 则start

#!/bin/bash

test=`ps -ef | grep httpd | grep -v grep`

if [ -n "$test" ]
    then
        echo "httpd is start"
    else
        echo 'httpd is stop'
        /etc/init.d/httpd start
fi

5. shell计算器

#!/bin/bash

read -t 30 -p 'please input first num: ' num1
read -t 30 -p 'please input second num: ' num2

read -t 30 -p 'please input operator: ' ope

sum=''
if [ -n "$num1" -a -n "$num2" -a -n "$ope" ]
    then
    # 判断是不是数值
    test1=`echo $num1 | sed 's/[0-9]//g'`
    test2=`echo $num2 | sed 's/[0-9]//g'`
    if [ -n "$test1" -o -n "$test2" ]
        then
        echo "invalid number"
        exit 11
    else
        if [ "$ope" == "+" ]
            then
            sum=$(($num1 + $num2))
        elif [ "$ope" == "-" ]
            then
            sum=$(($num1 - $num2))
        elif [ "$ope" == "*" ]
            then
            sum=$(($num1 * $num2))
        elif [ "$ope" == "/" ]
            then
            sum=$(($num1 / $num2))
        else
            echo "invalid operator"
            exit 12
        fi
    fi
else
    echo "invilid number or operator"
    exit 10
fi

if [ -n "$sum" ]
    then
    echo "$num1 $ope $num2 = $sum"
fi

6. case练习

#!/bin/bash

read -t 30 -p "are you sure [y|n] : " choose

case "$choose" in
    # 正则匹配
    Y|y|[Y|y])
        echo "yes"
        ;;
    "n")
        echo "no"
        ;;
    *)
        echo "other"
        ;;
esac

二. 循环

1. 批量解压缩

#!/bin/bash

cd /root/tar
echo $?;

ls *.tar.gz > ls.log
ls *.tgz >> ls.log

files=`cat ls.log`
echo $files
for file in $files
    do
        tar -zxf $file &> /dev/null
    done

rm -rf ls.log

2. 求和

#!/bin/bash

s=0;

for(( i=1; i<=100; i=i+1))
    do
        s=$(( $s + $i))
    done
echo $s

3. 批量添加用户, 并赋予初始密码

#!/bin/bash

read -t 30 -p "please input username-prefix: " user
read -t 30 -p "please input count: " count
read -t 30 -p "please passwd: " passwd

if [ -z "$user" -o -z "$count" -o -z "$passwd" ]
    then
    echo "invalid param"
    exit 13
fi

test_count=`echo $count | sed 's/[0-9]//g'`
if [ -z "$test_count" ]
    then
    # 添加用户
    for(( i=1;i<=$count;i=i+1 ))
        do
            /usr/sbin/useradd $user$i &> /dev/null
            echo $passwd | /usr/bin/passwd --stdin $name$i &> /dev/null
        done
fi

4. 批量删除用户

#!/bin/bash

users=$( cat /etc/passwd | grep adduser | cut -d ":" -f 1 )
#users=`cat /etc/passwd | grep /bin/bash | grep -v root`

for user in $users
    do
       /usr/sbin/userdel -r $user
    done

5. while循环

#!/bin/bash

# 求两个数的累加和

read -t 30 -p "please start num: " start_num
read -t 30 -p "please end num: " end_num

sum=0

while [ $start_num -le $end_num ]
    do
        sum=$(( $start_num + $sum ))
        start_num=$(( $start_num + 1 ))
    done

echo $sum

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容

  • 最近开始学习Linux一些基础的知识,其中就有关于shell脚本的,今天不是要写什么高大上的东西,是给和我一样的初...
    我在鄱阳湖边阅读 632评论 0 0
  • 本文全面系统地介绍了shell脚本调试技术,包括使用echo, tee, trap等命令输出关键信息,跟踪变量的值...
    liuzg0734阅读 898评论 0 14
  • 第一次仔细观察它,是在一天早上,那天阳光明媚,准备和老公一起带孩子出去走走。 老公带着大宝在街上吃早餐,我带着二宝...
    桃灼妖妖阅读 325评论 0 1
  • 以前的段子讲:985是软卧,211是硬卧,普通一本二本是硬座,三本是站票,专科挤厕所,其他的趴火车顶上。只要到了目...
    Crazy梦溪阅读 379评论 0 0
  • 你用颜色和字母宣告了你的速度 绿色不加任何字母的是慢车 那个慢悠悠的速度 像是疲惫不堪的老人 走走停停 绿色加字母...
    朵先森阅读 112评论 0 1