加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux中的shell脚本管理(二)

发布时间:2016-10-23 09:09:49 所属栏目:Linux 来源:网络整理
导读:在Shell脚本中执行使用if语句的好处是:可以根据特定的条件(eg:判断备份目录是否存在)来决定是否执行某项操作,当满足不同的条件时执行不同的操作(eg:备份

在Shell脚本中使用for循环语句时,可以为变量设置一个取值列表,每次读取列表中不同的变量值并执行相关命令操作,变量值用完以后则退出循环。Shell中的for语句不需要执行条件判断,其使用变量的取值来自于预先设置的值列表。

for语句结构:

for 变量名 in 取值列表

do

命令序列

done

在上述语句中,使用in关键字为用户自定义变量设置了一个取值列表(以空格分隔的多个值),for语句第一次执行时首先将列表中的第一个取值赋给该变量。然后执行do后边的命令序列;然后再将列表中的第二个取值赋给该变量,然后执行do后边的命令序列......如此循环,直到取值列表中的所有值都已经用完,最后将跳至done语句,表示结束循环。

for语句示例:

eg:依次输出三条文件信息,包括一天中的"Morning"、"Noon"、"Evening"字串。

vi showday.sh
#!/bin/bash
for TM in "Morning" "Noon" "Evening"
do
echo "The $TM of the day."
done

linux中的shell脚本管理(二)

eg:对于使用“/bin/bash”登录Shell的系统用户,检查他们在"/opt"目录中拥有的子目录或文件数量,如果超过100个,则列出具体数量及对应的用户账号。

vi chkfileown.sh
#!/bin/bash
DIR="/opt"                //设置检查的目标目录
LMT=100                //设置文件数量的限制值
ValidUsers=`grep "/bin/bash" /etc/passwd | cut -d ":" -f 1`                //找出使用bash的系统用户列表
for UserName in $ValidUsers
do
Num=`find $DIR -user $UserName | wc -l`              //统计每个用户拥有的文件数
if [ $Num -gt $LMT ] ; then
echo "$UserName have $Num files."
fi
done
sh chkfileown.sh
root have 20998 files

4、使用while循环语句

在Shell脚本中使用while循环语句时,将可以根据 特定的条件重复执行一个命令列表,直到该条件不再满足时为至。除非有特别需要,否则在脚本程序中应该是避免出现无限循环执行命令的情况,因为若无法跳出循环的话,后边的某些操作将无法执行。为了控制循环次数,通常会在执行的命令序列中包含修改测试条件的语句,当循环达到一定次数后,测试将不再成立,从而可以结束循环。

while语句的结构:

while 条件测试命令

do

命令序列

done

在上述语句中,首先通过while判断条件测试命令的返回状态值是否为0(条件成立),如果是,则执行do后边的命令序列,然后返回到while再次进行条件测试并判断返回状态值,如果条件仍然成立,则继续执行do后边的命令序列,然后返回到while重复条件测试......如此循环,直到所测试的条件不成立时,跳转到done语句,表示结束循环。

使用while循环语句时,有两个特殊的条件测试返回值,即“true”(真)、"false"(假)。使用“true”作为测试条件时,条件将永远成立,循环体内的语句将无限次执行下去,反之使用“false”则条件永远不成立,循环体内的语句将不会被执行,这两个特殊值也可以用在if语句的条件测试中。

本栏目更多精彩内容:http://www.bianceng.cn/OS/Linux/

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读