您的位置:首页 > 运维架构 > Shell

shell-02

2017-02-11 12:37 148 查看

一 整数运算的命令

++ -- +=  -+ *= /= -=

++自加1

--自减1

x+=10 等同与 x=x+10

x-=10 等同与 x=x-10

x*=10 等同与 x=x*10

1.

expr  数字  运算符  数字   <-----------之间要有空格

2.

echo $((数字+运算符+数字))

echo $[数字+运算符+数字]

3.

let i++

let i--

let i+=10
let i=i+10

二 浮点数运算

#bc      交互式

#echo "scale=2;3/4" | bc

#echo "1+2" | bc

bc支持逻辑运算> <  <= == !=...

#echo "1>3" |bc  对是1,错是0

#echo "3>1" |bc  对是1,错是0

test测试
语法格式:

test 表达式

[ 表达式 ]

1.字符串测试

#[ -z $abc ]    判断abc是否为空值

#echo $?    结果为0,对,空

#abc=123

#[ -z $abc ]    判断abc是否为空值

#echo $?    结果为1,错,非空

所有测试都可用在测试前添加!代表取反

#abc=123

#[ ! -z $abc ]    判断abc是否为空值

#echo $?      结果为0,对,非空

#[ a = a ]     判断a是否与a相同

#echo $?    结果0,对,相同

#[ a != a ]     判断a是否与a不相同

#echo $?    结果1,错

2.数字判断

#[ 3 -eq 3 ]   判断3是否等于3

-eq    等于equal

-ne    不等于notequal

-gt    大于greaterthan

-lt     小于lessthan

-ge   大于等于

-le    小于等于

#A&&B   仅A命令成功,才执行B命令

#A||B   仅A不成功,才执行B命令

#A;B;C   执行A,执行B,执行C,没有逻辑关系

#[ 3 -eq 3 ]&& echo Y || echo N

#[ 3 -eq 4 ]&& echo Y || echo N

$((RANDOM%10)) = $[RANDOM%10]

表示随机取{0~9}十个数字
$((RANDOM%100)) = $[RANDOM%100]
表示随机取{0~99}十个数字

#vim test.sh

#!/bin/bash

num=$((RANDOM%10))

read -p "随机数[0-9],你猜:"guess

[ $guess -eq $num ]&&echo "猜对了"&&exit||echo "悲惨"

3.对文件和目录的测试

-e 文件或目录  判断是否存在

-f 文件或目录  判断是否存在且为文件

-d 文件或目录  判断是否存在且为目录

-r 文件或目录  判断是存在且否有r权限

-w 文件或目录  判断是否存在且有w权限

-x 文件或目录  判断是否存在且有x权限

-s 文件或目录  判断是否存在且非空

#[ -f /etc/hosts ] && echo Y ||echo N

#vim test8.sh

#!/bin/bash

login_num=`who |wc -l`  #反引号

[ $login_num -gt 5 ]&&mail -s "Error" root </etc/passwd

 

制定计划任务

#crontab -e

*/1 * * * *  /var/tmp/test8.sh

Shell中的IF语句

格式1:

if [ 判断 ];then

    命令

fi

格式2:

if [ 判断 ];then

    命令

else

    命令

fi

格式3:

if [ 判断 ];then

    命令

elif [ 判断 ];then

    命令

... ...

else

    命令

fi

 

#vim test.sh

#!/bin/bash

ping -c 3 -i 0.1 -w 2 $1 &>/dev/null

if [ $? -eq 0 ];then

    echo "该主机$1,ping通"

else

    echo "该主机$1,无法ping通"

fi

等级分

>=90  神功盖世

80-89 登堂入室

70-79 初窥门道

60-69 初学炸道

<60   婴儿

#!/bin/bash

read -p "输入您的积分:" jifen

if [ $jifen -ge 90 ];then

    echo "神功盖世"

elif [ $jifen -ge 80 ];then

    echo "登堂入室"

elif [ $jifen -ge 70 ];then

    echo "初窥门道"

elif [ $jifen -ge 60 ];then

    echo "初学炸道"

else

    echo "婴儿"

fi

+++++++++++++++++++++++++++++
猜数字游戏:

#!/bin/bash

num=$((RANDOM%100))

for i in {1..6}

do

read -p "有个随机数[0-99],你猜:"guess

if [ $guess -eq $num ];then

    echo "恭喜,猜对了,猜了$i次"

    exit

elif [ $guess -gt $num ];then

    echo "您猜大了,猜了$i次"

else

    echo "您猜小了,猜了$i次"

fi

done-eq

if [ $guess  $num ];then

    if [ $guess -eq 10 ];then

       echo 对,而且中奖

    fi

else

    echo 错了

fi

if [];then

    命令

elif

    命令

fi

read -p 请输入数字: num

if [ $num -eq 2 ]

+++++++++++++++++++++++++++++

#!/bin/bash

read -p "请输入数字:" num

if [ -z $num ];then

    echo "没有东西"

    exit

fi

jieguo=`echo "$num*1" |bc`

if [ $jieguo -eq 0 ];then

    echo "不是数字"

    exit

fi

if [ $num -eq 2 ];then

    echo "ok"

else

    echo "OOOO"

fi

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: