Linux:Shell编程之循环语句与函数

本文详细介绍了循环语句(包括for、while和控制语句),函数的概念、格式以及递归,展示了它们在编程中的重要性,如简化逻辑、提高效率和代码复用。还探讨了如何使用循环遍历数据库和文件操作,以及函数库在实际项目中的应用。
摘要由CSDN通过智能技术生成

绪论:

循环:重复执行一段代码的结构,通过循环可以满足一定的条件下,多次执行相同的代码

循环语句:

循环体:代码的总结构,循环条件,当循环条件满足时,循环体内的代码才会执行,条件不满足,循环结束。不

目录

绪论:

1、循环语句

1.1 循环的特点

1.2 for循环语句

1.2.1 for循环语句的特点

1.2.2 双重循环

1.2.3 循环控制语句

1.3 while循环

1.3.1 格式

1.3.2 随机数

1.3.3 until

2、函数

2.1 什么是函数

2.2 函数的格式

2.3 return和exit

2.4 函数变量的作用范围

2.5 递归函数

2.6 函数库


遍历:对数据库结构中的每个元素都进行一次访问的过程。进行操作或者输出

循环和遍历是结合在一起的

循环实际上是一种控制流程的结构,用于重复执行代码

1、循环语句

1.1 循环的特点

· 重复执行代码

· 可以简化程序的逻辑,提高程序的可读性和可理解性,降低代码出错的可能性

· 提高了代码的重复利用率

· 提高了效率,循环可以自动化让程序执行,减少了人工的干预

循环的作用就是批量的执行代码的一种方式,减少人工干预,提高效率

1.2 for循环语句

1.2.1 for循环语句的特点

for的第一种方式:

· for循环主要用于已知次数的循环

· 语法结构:

for  变量名  in  取值列表

do

命令序列,对取值范围内的变量进行特定操作

done

· 无限循环: for((;;)) 也就是死循环

eg:批量添加用户,用户名存放在user.txt文件中,每行一个初始密码为123456.验证脚本

vim进去添加几个用户

vim user.txt 
yh1
yh2
yh3
yh4
~      
vim yh.sh
编辑
set -x
for i in $(cat /opt/user.txt)
do
useradd $i
echo 123456 | passwd --stdin $i
done
set +x

sh yh.txt运行一下

eg:根据IP地址检查主机状态,IP地址存放在ipadds.txt文件中,每行一个,使用ping命令检测各主机的通性,ping放进/opt/hosts.txt,不通提示

vim 1.sh 
编辑:
for i in $(cat /opt/ipadds.txt)
do
ping -c 5 $i
if [[ $? -eq 0 ]]
then
echo "成功"
wcho "$i" >> /opt/hosts.txt
else
echo "失败"
fi
done
保存退出
vim ipadds.txt
20.0.0.70
20.0.0.40
保存退出
sh执行             

for的第二种方式

for i in {1..5}  表示1到5

eg:vim  xunhuan.sh

for i in {1..10}

do

echo $i

done保存退出

sh执行

for的第三种方式:类C语言格式

for  ((表达式1;表达式2;表达式3))

do

命令序列

done

eg:for  ((i=1;i<=10;i++))

do

echo  $i

done

eg:计算1-10的和

vim  qiuhe.sh
sum=0
for i in {1..10}
do
sum=$(($i+$sum))
done

eg:计算1-100的奇数和偶数的和

vim  he.sh
sum1=0
sum2=0
for i in {1..100}
do
if [[ $i%2 -eq 0 ]]
then
sum1=$(($i+$sum1))
else
sum2=$(($i+$sum2))
fi
done
echo "偶数和为${sum1},奇数和为${sum2}"

1.2.2 双重循环

echo  -n :不换行输出                                                                                                

echo  -e :使用转义符

\b  ----  可以理解为使用删除键

\n  ----  换行输出

\t  ----  相当于使用tab键

\c  ----  不换行输出        特点:如果转义符过长会导致后面不会输出

eg:打印九九乘法表

vim 99.sh
for i in {1..9}  #看循环次数,i=1到9
do
for ((j=1;j<=i;j++1))
do
echo -ne "$i*$j=$($i*$j")/lt" 表示不换行输出,每循环一次打印一个
done
echo
done
外面的大循环,大循环控制整个循环次数,大循环打印行,内循环控制的是列

1.2.3 循环控制语句

break ----  一旦触发break,整个循环就会立刻跳出,即使后续还有条件,页不会再去继续执行

continue  ----  触发continue后,只会跳出本次循环,后续的循环可以继续执行;

                      continue ~ 后面加上数字表示作用到第几层循环

exit  ----  直接退出循环,后续不再执行
 

vim  kongzhi.sh
for i in {1..5}
do
if [ $i -eq 3 ]
then
break 
fi
echo $i
done

1.3 while循环

while:当满足条件时,执行循环,不满足条件时结束循环

while用于不知具体循环次数的循环,需要被动结束循环或达到循环条件的场景

1.3.1 格式

while [ 条件语判断 ]

do

命令序列

done

特殊的while循环 ---- 死循环

使用格式:

while true  或   while [ 1 -eq 1 ]

1.3.2 随机数

命令语句: $RANDOM  -------------  生成一个随机数

无任何定义的 $RANDOM      范围:0 ~ 52767

定义范围:

$((RANDOM%100))  -------  范围:0 ~ 99

$((RANDOM%100+1))  --------  范围:0 ~ 100

$((RANDOM%1000))  -------  范围:0 ~ 999

eg:购物环节 

淘宝只有一家店,

衣服 500

裤子 400

鞋子 300

帽子 200

袜子 100

每次选购完成之后都要提示用户是否继续购买,如果用户不买了,要提示结算金额,你消费了多少

如果继续买,就继续添加商品,最后也要给一个总金额

1.3.3 until

当判断条件不成立时才进行循环,条件成立终止循环

格式:until [ 条件测试语句 ]

do

命令序列

done

eg:计算1-10求和

vim js.sh
i=0
sum=0
until [ $i -gt 10 ]
do
sum=$(($i+$sum))
let i++
done
echo $sum

2、函数

2.1 什么是函数

将命令序列按照和格式写在一起(在函数中)

函数的核心作用:

重复多次使用命令序列

函数的特点:

使用函数可以避免代码重复

函数可以将大的功能分割成若干个小的功能模块,可以提高代码的可读性

2.2 函数的格式

function 取名 {

echo  "函数1"

}

取名

eg:

function ky30  {

read  -p  "请输入一个数"

a=¥(($a*2))

}

ky30

echo $a

2.3 return和exit

return:

表示退出函数,并返回一个退出值,用$?可以显示退出值(0 / 非0 即 真 / 假)

一般return写在函数定义的最后一行;

退出值的范围:0 ~ 255;如果返回值超过了255,会输出返回值除以256后取余的值

在shell脚本中,return的返回值在不标注的情况下,默认为0或非0

总结:

return 作用在函数内部,在shell中,return一般用来判断函数的执行情况(即成功或是失败)
exit:

作用于整个脚本,立刻终止,并且没有返回码

exit 0    ----    表示程序正常的退出

exit fei0   ----   表示程序非正常退出

函数传参

在shell中,调用函数可以传递参数;(使用位置变量来实现传参)

2.4 函数变量的作用范围

函数在shell中,仅仅在当前的shell环境中有效

在函数中定义的变量默认为全局变量,除非添加了local字段后变为内部变量         

vim hs.sh
sum1 () {
a=4
b=5
}
a=8
b=9
sum1
echo $a
echo $b
此时还会输出4,5,因为函数内部定义了全局,想打印外面的8,9就得
a=4
b=5
local a=4
local b=5

2.5 递归函数

函数调用自己本身的函数

函数调用自己,打印出自定义目录下所有的命令和文件

2.6 函数库

函数库中包含函数的定义,脚本中包含调用函数的方法,也可以有执行代码

eg:计算器使用函数库来进行调用

vim hanshu.sh
jiafa() {
result=$(($1+$2))
echo $result
}
chengfa() {
result=$(($1*$2))
echo $result
}
保存退出
vim diaoyong.sh
. /opt/hanshu.sh
read -p "输入第一个数字:num1"
read -p "输入第二个数字:num2"
jf=`jiafa $num1 $num2`
cf=`chengfa $num1 $num2`
echo "jf"
echo "cf"

eg:使用函数库建立一个yum源。然后在脚本中安装一个服务nginx

 

 

 

     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曦雨天梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值