shell编程之循环语句与函数

这篇具有很好参考价值的文章主要介绍了shell编程之循环语句与函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.shell函数

1.作用

(1)将命令序列按格式写在一起

(2)可方便重复使用命令序列

2.使用函数的优势

(1)使用函数可以避免代码冲突

(2)将大的工程可以分割为若干小的功能模块,代码的可读性更强

3.shell函数定义

3.1方式1:

[function] 函数名 () {

命令系列

[return x]————————使用return或exit可以显示地结束函数

}

3.2方式2:

函数名 () {

命令系列

}

4.调用函数的方法

函数名 [参数1] [参数2]

5.函数返回值

5.1 return

退出函数并返回一个退出值,作用于函数内部,函数返回值的范围:0~255之间(0就是成功,只要返回值非0也都认为失败,在shell中的返回码可以自定义,因此可以让成功也可以让失败。

function abc {

read -p "输入一个数字:" a
a=$(($a*2))
return 0
}
abc————————————————必须加函数名,用来调用
echo $a

shell编程之循环语句与函数

5.2 exit

终止函数运行,exit0,函数执行exit语句,整个脚本将立刻停止,并把指定的退出状态码返回给调用者。

function abc {

read -p "输入一个数字:" a
a=$(($a*2))
exit 0
}
abc
echo $a

shell编程之循环语句与函数

6.1-100奇偶求和相加

第一种:

oushu () {
sum1=0
for i in `seq 2 2 100`
 do
 sum1=$(($i+$sum1))
done
}
oushu
 echo $sum1
jishu () {
sum2=0
for o in `seq 1 2 100`
 do
 sum2=$(($o+$sum2))
done
}
jishu
 echo $sum2
total=$(($sum1+$sum2))
echo $total 

shell编程之循环语句与函数

第二种:

jishu () {
sum1=0
for ((i=1;i<=100;i+=2))
do
sum1=$(($sum1+$i))
done
}
jishu
echo $sum1

oushu () {
sum2=0
for ((j=2;j<=100;j+=2))
do
sum2=$(($sum2+$j))
done
}
oushu
echo $sum2

total=$(($sum1+$sum2))
echo $total

shell编程之循环语句与函数

二.函数传参

1.含义

在shell中,调用函数时可以向其传递参数

在函数体内部,通过$n的形式来获取参数的值

2.函数传参的方式

方式一:

sum1 () {
 sum=$[$1 + $2]
 echo $sum
}

read -p "请输入第一个数:" first
read -p "请输入第二个数:" second
sum1 $first $second

[root@test1 opt]# chmod 777 cc.sh

[root@test1 opt]# ./cc.sh

shell编程之循环语句与函数

方式二:

sum1 () {
 sum=$[$1 + $2]
 echo $sum
}
sum1 $1 $2

shell编程之循环语句与函数

三.函数变量的作用范围

1.函数变量的作用范围

(1)函数在Shell脚本中仅在当前Shell环境中有效

(2)Shell脚本中变量默认全局有效

(3)将变量限定在函数内部使用local命令

2.调用函数

加了local只能在函数内部生效,如果函数外重新定义,值会被更改,

调用函数:第一步内部没定义传外部的9,第二步内部重新定义全局变量为8不受外部影响,第三步第一次已经传参进去打印。

2.1示例:

bash -x + 脚本名称 ——查看详细过程

shell编程之循环语句与函数
shell编程之循环语句与函数

abc () {
echo "inside $i"————————————#定义了外部9
let i++
local i
i=8
echo "inside $i"

}
i=9
abc
echo "outside $i"

shell编程之循环语句与函数

3.递归

3.1含义

函数调用自己本身的函数

3.2递归示例

/etc,展示/etc 目录下的所有内容

mulu () {
for i in `ls $1`
do
 if [ -d "$1/$i" ] #是否为目录
  then
   echo "$1$i"
   muli "$1/$i"#不是目录的话要打印文件,调用查看目录下是否还有东西
 else
  echo "$i"  #$2 为空,不传参,只输入文件名
fi
done
}
mulu $1

shell编程之循环语句与函数

shell编程之循环语句与函数

4.阶乘

4.1阶乘的含义

阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。

例如所要求的数是4。则阶乘式是1x2x3x4,得到的积是24,24就是4的阶乘。 例如所要求的数是6.则阶乘式足1x2x3*…6,得到的积是720,720就是6的阶乘。例如所要求的数是n,则阶乘式是1x2x3*…*n,设得到的积是x,x就是n的阶难。

总:输入一个数一直乘到自己,1不算,每一次自己减一再作为参数乘以自己到1不乘。

4.2阶乘示例

jiecheng () {
if [ $1 -eq 1 ]
 then
  echo 1
else
 local number=$(($1-1))
 local result=$(jiecheng $number) #自己乘自己每次的
结果减1
 echo "$(($1*$result))"
fi
}
read -p "输入一个数求阶乘: " num
result=`jiecheng $num`
echo $result

shell编程之循环语句与函数

5.函数库

vim hsk.sh
jiafa () {
result=$(($1+$2))
echo $result
}

jianfa () {
result=$(($1-$2))
echo $result
}

chengfa () {
result=$(($1*$2))
echo $result
}

chufa () {
if [ $2 -ne 0 ]
 then
result=$(($1/$2))
echo $result

else
 echo "$2不能是0!"
fi

调用数据库

vim dy.sh
. /opt/hsk.sh
read -p "请输入第一个数:" first
read -p "请输入第二个数:" second
a=`jiafa $first $second`
b=`jianfa $first $second`
c=`chengfa $first $second`
d=`chufa $first $second`

echo $a
echo $b
echo $c
echo $d

shell编程之循环语句与函数

6.拓展

函数能够接受一个参数,参数为用户名; 判断一个用户是否存在 如果存在,就返回此用户的shell 和 UID ;并返回正常状态值; 如果不存在,就说此用户不存在;并返回错误状态值。
shell编程之循环语句与函数
shell编程之循环语句与函数

shell编程之循环语句与函数

shell编程之循环语句与函数文章来源地址https://www.toymoban.com/news/detail-470946.html

到了这里,关于shell编程之循环语句与函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】shell编程4(break语句、continue、exit、shell的函数、返回值return)

    break语句用于从for、while、until或select循环中退出、停止循环的执行。 语法: n代表嵌套循环的层级,如果指定了n,break将退出n级嵌套循环。 如果没有指定n或n小于 1,则退出状态码为0,否则退出状态码为n。 一句话总结:跳出当前循环 continue语句用于跳过循环体中剩余的命令

    2024年02月04日
    浏览(46)
  • Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API

    Java 是一种由 Sun Microsystems 于 1995 年首次发布的编程语言和计算平台。Java 是一种通用的、基于类的、面向对象的编程语言,旨在减少实现依赖性。它是一个应用程序开发的计算平台。Java 快速、安全、可靠,因此在笔记本电脑、数据中心、游戏机、科学超级计算机、手机等领

    2024年03月24日
    浏览(91)
  • shell脚本之循环语句

    将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件 一般知道循环次数使用for循环 不知道循环次数,知道停止条件时一般使用while break跳出单个循环后面加数字2则代表跳出两层循环 continue终止某次循环中的命令,但是不会完全终止命令

    2024年02月12日
    浏览(40)
  • Shell脚本while循环语句应用

    记录 :433 场景 :Shell脚本while循环语句应用。Shell脚本while循环语句应用。while do done、while : do done、while true do done。 版本 :CentOS Linux release 7.9.2009。 1.while常用格式 1.1格式一:while do done 1.2格式二:无限循环(while : do done) 1.3格式三:无限循环(while true do done) 2.使用while遍历数组

    2024年02月06日
    浏览(75)
  • Shell脚本攻略:循环语句for

    目录 一、理论 1.for循环 2.echo命令 二、实验 1.实验一 2.实验二 3.实验三 4.实验四 5.实验五 6.实验六 7.实验七 8.实验八 9.实验九 (1)for循环的常见用法       ① 带列表的for循环 带列表的for循环用于执行一定次数的循环,其语法结构如下: for 变量名 in 取值列表 do   命令序列

    2024年02月06日
    浏览(44)
  • 【玩转Linux操作】一文带你明白Shell的判断,循环语句

    🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 注意写空格 if … then 形式 类似于C/C++里面的 if-else 语句 🎈示例 🎈示例 🎈示例 类似于C/C++的 switch 语句 🎈示例 注意写空

    2024年02月13日
    浏览(42)
  • 【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]

    👨‍🎓 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! 🐋 希望大家多多支持,我们一起进步!😄 🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏

    2024年02月13日
    浏览(49)
  • 【Shell编程之条件语句】

    测试表达式是否成立,若成立返回0,否则返回其他数值 2.1、常用的测试操作符 命令 解释 -d 测试是否为目录(Directory) -e 测试目录或文件是否存在(Exist) -f 测试是否为文件(File) -r 测试当前用户是否有权限读取 (Read) -w 测试当前用户是否有权限写入 (Write) -x 测试当前用户是否有权

    2023年04月27日
    浏览(33)
  • Shell编程之条件语句

    在简单的Shell脚本程序中,各语句将 按先后顺序依次执行 ,从而实现批处理的自动化过程。然而,单一的顺序结构使得脚本过于机械化,不够智能,难以处理更加灵活的系统任务。 本章主要讲了 条件测试,包括文件测试、整数值比较、字符串比较和逻辑测试 。以及如何使用

    2024年02月01日
    浏览(43)
  • 【Linux】Shell编程之条件语句

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 test命令 测试表达式是否成立,若成立返回0,否则返回其他数值 常用的测试操作符 -d :测试是否为目录 (Directory) -e:测试目录或文件是否存在(Exist) -f:测试是否为文件 (File) -r:测试当前用户是否有权

    2024年02月03日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包