Shell编程之循环语句与函数

一、for循环语句

1、for语句结构

读取不同的变量值,用来逐个执行一组命令

#格式:
for 变量名 in 取值列表
do
	命令序列
done

2、例

[root@localhost data]#vim 1.sh

#!/bin/bash
for i in {a..d}  //变量i={abcd}
do           //命令序列
    echo $i  //输出结果
done         //循环结束
[root@localhost data]#bash 1.sh   //运行脚本
a
b
c
d
#############################################################
[root@localhost data]# vim 99.sh

#!/bin/bash
for ((i=1;i<=9;i++))			//外循环,$i的取值为1,每次循环+1,等于9结束
do
        for ((j=1;j<=i;j++))	//内循环,$j的取值为1,每次循环+1,等于$i结束
        do	
                echo -n " $i x $j=$(expr $i \* $j)"		//每次循环不换行输出 $ix$j
                        if [$j -eq $i ]					//判断$j和$i是否相等
                        then							//条件成立
                                echo -e "\n"			//则换行
                        fi								//判断结束
        done					//内循环结束
done							//外循环结束

二、while循环语句

1、while语句结构

重复测试某个条件,只要条件成立则反复执行

#格式:
while 条件测试操作
do
	命令序列
done

在这里插入图片描述

2、例

[root@localhost data]# vim while1.sh
#!/bin/bash
i=1						//定义变量i=1
while [ $i -le 5 ]		//当i等于5时停止循环
do

        echo $i			//每次循环输出i的值
        let i++			//每次循环+1

done					//结束循环
echo "最后i的值为:$i"	//输出最后$i的值

[root@localhost data]# bash while1.sh 
1
2
3
4
5
最后i的值为:6

三、until语句

1、until语句结构

重复测试某个条件,只要条件不成立则反复执行

until 条件测试操作
do
	命令序列
done

2、例

[root@localhost data]# vim zz.sh 

#!/bin/bash
i=1				//定义变量i=1
sum=0			
until [ $i -eq 51 ]		//$i等于51时停止执行
do	
        sum=$[$i+$sum]	//定义sum等于$i + $sum
        let i++			//每次循环i+1	

done
echo "$sum				//打印结果 $sum
[root@localhost data]# bash zz.sh 
1275

四、函数

  • 将命令序列按格式写在一起,可以方便重复使用命令序列。
  • shell函数定义 两种方式
#格式一:
[ function ] 函数名(){
	命令序列
	[return x]  //使用return或exit可以显示地结束函数
}

#格式二:
函数名 (){	//最常用,因为最简洁
命令序列
}

1、函数调用

直接再脚本里定义函数的代码块后写函数名即可完成调用

#这是规范的写法
#!/bin/bash
function fun1 {		//定义了一个函数叫做fun1
echo "this is a function"
}

#这是简洁的写法
#!/bin/bash
f1 () {
echo hello 
}

f2 () {
echo world
}

f3 () {
echo "`f1` `f2`" 
}
f3

2、例

###部署本地yum源
[root@localhost data]# vim zz.sh 

#!/bin/bash
backuprepo (){				//函数名
cd /etc/yum.repos.d			
mkdir repo,bak
mv *.repo repo.bak
mount /dev/sr0 /mnt &>/dev/null
}

makelocalrepo (){
echo
[local]
name=local
baseurl=file:///mnt
enable=1
gpgcheck=0 > local.repo
}

userlocalrepo (){
yum clean all > /dev/null
yum makecache > /dev/null
yum install -y httpd > /dev/null
}

backuprepo			//调用
makelocalrepo		//调用
userlocalrepo		//调用

3、函数作用范围

在 Shell 脚本中函数的执行并不会开启一个新的子Shell,而是仅在当前定义的Shell 环境中有效。
如果Shell脚本中的变量没有经过特殊设定,默认在整个脚本中都是有效的。
在编写脚本时,有时需要将变量的值限定在函数内部,可以通过内置命令local来实现。
函数内部变量的使用,可以避免函数内外同时出现同名变量对脚本结果的影响。
shell脚本中变量默认全局有效。
local命令:将变量限定在函数内部使用。

五、数组

1、数组的定义

数组是存放在相同类型数据的集合,在内存中开辟了连续的空间,通常配合循环使用。

2、数组的定义方式

A="1 2 3 456"     //定义字符串
A=(1 2 3 4 567)		//定义数组
   0 1 2 3 4		//其下标示
方式一:
数组名=(value0 value1 value2)

num=(11 22 33 44)
${#num}     //显示字符串长度

[root@localhost data]# echo ${num[*]}
11 22 33 44
方式二:
数组名=([0]=value [1]=value [2]value ...)

num=([0]=55 [1]=66 [2]77 [4]88)

[root@localhost data]# echo ${num[*]}
[0]55 [1]66 [2]77 [3]88
方式三:
下标定义
         数组名[0]="11"
         数组名[0]="22"
         数组名[0]="33"

         数组名[0]="value"
         数组名[0]="value"
         数组名[0]="value"

总结

for语句的结构、while语句的结构、untile语句的结构、shell函数定义方法、数组使用方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值