linux简单的流程控制语句,流程控制语句

#### if条件测试语句

if条件语句的单分支结构由if、then、fi关键词组成。

![Image](https://box.kancloud.cn/30c5f4aeb18bb7035280021b096cc0ec_568x153.png)

如:判断/media/cdrom文件是否存在,若存在就结束条件判断和整个Shell脚本,反之则去创建整个目录。

vim mkcdrom.sh

\#!/bin/bash

DIR=”/media/cdrom”

if \[ ! -e $DIR \]

then

mkdir -p $DIR

fi

if条件语句的双分支结构由if、then、else、fi关键词组成。

![Image](https://box.kancloud.cn/fd8d10a3626670c770b23a4fe7d7cbe8_585x169.png)

如:判断某主机是否在线,根据返回值显示主机是否在线的信息

**ping命令 -c** **规定尝试的次数;-i定义每个数据包的发送间隔;-W定义等待超时时间**

vim chkhost.sh

\#!/bin/bash

ping -c 3 -I 0.2 -W 3 $1 &> /dev/null # $1表示的是第一个参数;&>是输出重定向

if \[ $? -eq 0 \]

then

echo “Host $1 is On-line.”

else

echo “Host $1 is Off-line.”

fi

执行:bash chkhost.sh 192.168.10.10(Host 192.168.10.10 is On-line.)

bash chkhost.sh 192.168.10.20(Host 192.168.10.20 is Off-line.)

if条件语句的多分支结构由if、then、elif、else、fi关键词组成。

![Image](https://box.kancloud.cn/315a0b0b57a4fd4ac43f3c9966f59f9b_579x246.png)

如:判断用户输入的分数在哪个成绩区间内,然后输出Excellent、Pass、Fail等提示信息。

read 是用来读取用户输入信息,接受赋值给后面的指定变量,-p显示一定的提示信息

vim chkscore.sh

\#!/bin/bash

read -p “Enter your score(0-100): ”GRADE

if \[ $GRADE -ge 85 \] && \[ $GRADE -le 100 \] ; then

echo “$GRADE is Excellent”

elif \[ $GRADE -ge 70 \] && \[ $GRADE le 84 \] ; then

echo “$GRADE is Pass”

else

echo “$GRADE IS Fail”

fi

执行:bash chkscore.sh

Enter your score(0-100): 88

88 us Excellent

#### for条件循环语句

for循环语句运行脚本一次性读取多个信息

![Image](https://box.kancloud.cn/03df9e1a0bff1d5b75e160a20e008a68_560x154.png)

如:从列表文件中(users.txt)读取多个用户,然后为其逐一创建用户账户并设置密码。

vim users.txt

andy

barry

carl

duke

eric

george

下面通过read读取用户输入密码赋值给PASSWD变量。然后逐一用“**id 用户名**”查看用户信息。

**/dev/null是一个被称作Linux黑洞的文件,把输出信息重定向到这个文件等同于删除数据(类似于没有回收功能的垃圾箱),可以让用户的屏幕窗口保持简洁。**

vim Example.sh

\#!/bin/bash

read -p “Enter The Users Password :” PASSWD

for UNAME in `cat users.txt`

do

id $UNAME &> /dev/null

if \[ $? -eq 0 \]

then

echo “Already exists”

else

useradd $UNAME &> /dev/null

echo “$PASSWD” | passwd --stdin $UNAME &> /dev/null

if \[ $? -eq 0 \]

then

echo “$UNAME , Create success”

else

echo “$UNAME, Create failure”

fi

fi

done

判断列表中(ipadds.txt)的主机是否在线

vim ipadds.txt

192\.168.10.10

192\.168.10.11

192\.168.10.12

vim CheckHosts.sh

\#!/bin/bash

HLIST=$(cat ~/ipadds.txt) ($类似于反引号`命令`)

for IP in $HLIST

do

ping -c 3 -i 0.2 -W 3 $IP $> /dev/null

if \[ $? -eq 0 \] ; then

echo “Host $IP is On-line.”

else

echo “Host $IP is Off-line.”

fi

done

#### while条件循环语句

while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句。

![Image](https://box.kancloud.cn/846130f7bbfb23b6cb247ad7b6d8c30a_608x151.png)

如:编写一个猜测数值大小的脚本Guess.sh

vim Guess.sh

#!/bin/bash

PRICE=$(expr $RANDOM % 1000) \#**(expr命令是取得结果)**

TIMES=0 #(统计次数)

echo “商品实际价格为0-999之间,猜猜看是多少?”

while true

do

read -p “请输入你您猜测的价格数目:”INT

**let TIMES++** # (次数自动累加)

if \[ $INT -eq $PRICE \] ; then

echo “恭喜您答对了,实际价格是$PRICE”

echo “您总共猜了 $TIMES 次”

exit 0

elif \[ $INT -gt $PRICE \] ; then

echo “太高了!”

else

echo “太低了!”

fi

done

#### case条件测试语句

case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行星号(\*)中所定义的默认命令。

![Image](https://box.kancloud.cn/c93b02e3f4f895f007fdacf4654d9b90_518x287.png)

如:提示用户输入一个字符并将其赋值给变量KEY,然后根据变量KEY的值向用户显示其值是字母、数字还是其他字符。

vim Checkkeys.sh

#!/bin/bash

read -p “请输入一个字符,并按ENTER键确认:”KEY

case “$KEY” in

\[a-z\]|\[A-Z\])

echo “您输入的是 字母。”

;;

\[0-9\])

echo “您输入的是 数字。”

;;

\*)

echo “您输入的是 空格、功能键或其他控制字符。”

esac

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值