05-11-shell编程(8) until循环-case选择-函数基本创建调用

声明!

学习视频来自B站up主 泷羽sec ,有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!

文章为个人学习笔记。

until循环

例子1

创建01.sh

i=0
until [ ! $i -lt 10 ]
do
    echo $i
    ((i++))
done

┌──(root㉿kali)-[~/work]
└─# bash 01.sh                                                                                                                 
0
1
2
3
4
5
6
7
8
9
  1. ​i=0​:初始化变量 i​ 为 0。这是循环计数器的起始值。

  2. ​until [ ! $i -lt 10 ]​:这是一个 until​ 循环,它会一直执行,直到括号内的测试条件为假。这里的测试条件是 ! $i -lt 10​,意味着当 i​ 不小于 10 时,循环停止。-lt​ 是小于(less than)的测试运算符。

  3. ​do​:这是 until​ 循环的开始。

  4. ​echo $i​:打印变量 i​ 的当前值。在循环的每次迭代中,这将输出 i​ 的值。

  5. ​((i++))​:这是一个自增表达式,它将 i​ 的值增加 1。在 Bash 中,(( ))​ 用于执行算术运算,这里的 i++​ 相当于 i = i + 1​。

  6. ​done​:这是 until​ 循环的结束。

这段脚本的执行流程如下:

  • 初始化 i​ 为 0。

  • 进入 until​ 循环。

  • 打印 i​ 的值。

  • 将 i​ 的值增加 1。

  • 检查 i​ 是否小于 10,如果是,则继续循环;如果不是,则退出循环。

最终,这段脚本将输出数字 0 到 9,每个数字一行。

case选择语句

例子1

02.sh

read -p "请输入一个数值:" num
case $num in
	1)echo 你输入的数字是1
	;;
	2)echo 你输入的数字是2
	;;
	*)echo 你输入的是:其他的内容
	;;
esac

┌──(root㉿kali)-[~/work]
└─# bash 02.sh                                                                                                                 
请输入一个数值:1
你输入的数字是1

┌──(root㉿kali)-[~/work]
└─# bash 02.sh
请输入一个数值:2
你输入的数字是2

┌──(root㉿kali)-[~/work]
└─# bash 02.sh                                                                                                                 
请输入一个数值:4587
你输入的是:其他的内容

┌──(root㉿kali)-[~/work]
└─#                            
  1. ​read -p "请输入一个数值:" num​:这行代码使用 read​ 命令提示用户输入一个数值。-p​ 选项允许你指定一个提示信息,该信息会在命令行上显示,告诉用户需要输入什么。用户输入的值将被存储在变量 num​ 中。

  2. ​case $num in​:这行代码开始了 case​ 语句,它允许你根据变量 num​ 的值来选择执行不同的代码块。case​ 语句是条件判断的一种,用于匹配多个可能的值。

  3. ​1)echo 你输入的数字是1 ;;​:这是 case​ 语句的第一个模式。如果 num​ 的值是 1​,那么将执行 echo​ 命令,输出 "你输入的数字是1"。;;​ 是 case​ 语句中每个模式的结束标记。

  4. ​2)echo 你输入的数字是2 ;;​:这是 case​ 语句的第二个模式。如果 num​ 的值是 2​,那么将执行 echo​ 命令,输出 "你输入的数字是2"。同样以 ;;​ 结束。

  5. ​*)echo 你输入的是:其他的内容 ;;​:这是 case​ 语句的默认模式。星号 *​ 是一个通配符,匹配除了前面明确列出的值之外的任何值。如果 num​ 的值既不是 1​ 也不是 2​,那么将执行 echo​ 命令,输出 "你输入的是:其他的内容"。这也以 ;;​ 结束。

  6. ​esac​:这是 case​ 语句的结束标记。

这段脚本的工作流程如下:

  • 首先,脚本会提示用户输入一个数值。

  • 用户输入数值后,脚本会根据输入的数值匹配 case​ 语句中的模式。

  • 如果用户输入的是 1​,脚本会输出 "你输入的数字是1"。

  • 如果用户输入的是 2​,脚本会输出 "你输入的数字是2"。

  • 如果用户输入的是除了 1​ 和 2​ 之外的任何值,脚本会输出 "你输入的是:其他的内容"。

这种结构使得脚本能够根据用户的输入做出不同的响应。

函数

例子1

03.sh

DemoFunc() {
    echo "hello world"
}

DemoFunc

┌──(root㉿kali)-[~/work]
└─# bash 03.sh                                                                                                                 
hello world

  1. ​DemoFunc() {​:这是函数定义的开始。DemoFunc​ 是函数的名称,()​ 表示这是一个函数定义,而 {​ 表示函数体的开始。

  2. ​echo "hello world"​:这是函数体内的唯一一条语句。echo​ 是一个 Bash 命令,用于在终端输出文本。这里的文本是 "hello world"​,它会被显示在屏幕上。

  3. ​}​:这是函数体的结束大括号,标志着 DemoFunc​ 函数定义的完成。

函数调用部分:

  1. ​DemoFunc​:这是对前面定义的 DemoFunc​ 函数的调用。当脚本执行到这一行时,会执行 DemoFunc​ 函数体内的代码。

代码功能:

这段代码的功能是定义一个名为 DemoFunc​ 的函数,该函数的作用是输出字符串 "hello world" 到控制台。然后,通过直接调用函数名 DemoFunc​ 来执行这个函数,从而在控制台上显示 "hello world"。

执行流程:

  1. 脚本开始执行。

  2. 遇到 DemoFunc()​ 函数定义,Bash 解释器会记录这个函数的定义,但不会立即执行。

  3. 脚本继续执行,直到遇到 DemoFunc​ 函数调用。

  4. 当调用 DemoFunc​ 时,Bash 解释器会跳转到 DemoFunc​ 函数的定义处。

  5. 执行函数体内的 echo "hello world"​ 命令,将 "hello world" 输出到控制台。

  6. 函数执行完毕后,控制权返回到调用点,脚本继续执行(如果有更多代码的话)。

注意事项:

  • 函数定义和函数调用之间可以有其他代码,但在这个示例中,它们是连续的。

  • 函数定义中的大括号 {​ 和 }​ 用于界定函数体的开始和结束。

  • 函数调用时不需要括号 ()​,只需要函数名即可。

例子2

DemoFunc(){
	echo "hello word"
	echo "my name is $1"
}
DemoFunc xiaoyu


┌──(root㉿kali)-[~/work]
└─# vim 03.sh                                                                                                                 

┌──(root㉿kali)-[~/work]
└─# bash 03.sh                                                                                                                 
hello word
my name is xiaoyu

┌──(root㉿kali)-[~/work]
└─#          

函数定义部分:

  1. ​DemoFunc() {​:这是函数定义的开始。DemoFunc​ 是函数的名称,()​ 表示这是一个函数定义,而 {​ 表示函数体的开始。

  2. ​echo "hello word"​:这是函数体内的第一条语句。echo​ 是一个 Bash 命令,用于在终端输出文本。这里的文本是 "hello word"​,它会被显示在屏幕上。

  3. ​echo "my name is $1"​:这是函数体内的第二条语句。同样使用 echo​ 命令输出文本,但这次文本中包含了一个变量 $1​。在 Bash 脚本中,$1​ 代表传递给函数的第一个参数。当函数被调用时,$1​ 会被替换为实际传递的参数值。

  4. ​}​:这是函数体的结束大括号,标志着 DemoFunc​ 函数定义的完成。

函数调用部分:

  1. ​DemoFunc xiaoyu​:这是对前面定义的 DemoFunc​ 函数的调用,并且传递了一个参数 xiaoyu​。当脚本执行到这一行时,会执行 DemoFunc​ 函数体内的代码,并将 xiaoyu​ 作为参数 $1​ 传递给函数。

代码功能:

这段代码的功能是定义一个名为 DemoFunc​ 的函数,该函数的作用是首先输出 "hello word"(应为 "hello world"),然后输出 "my name is" 后跟一个参数值。在调用 DemoFunc xiaoyu​ 时,"hello word" 会被显示在屏幕上,紧接着是 "my name is xiaoyu"。

执行流程:

  1. 脚本开始执行。

  2. 遇到 DemoFunc()​ 函数定义,Bash 解释器会记录这个函数的定义,但不会立即执行。

  3. 脚本继续执行,直到遇到 DemoFunc xiaoyu​ 函数调用。

  4. 当调用 DemoFunc xiaoyu​ 时,Bash 解释器会跳转到 DemoFunc​ 函数的定义处。

  5. 执行函数体内的 echo "hello word"​ 命令,将 "hello word" 输出到控制台。

  6. 然后执行 echo "my name is $1"​ 命令,将 "my name is" 与参数 xiaoyu​ 结合,输出 "my name is xiaoyu" 到控制台。

  7. 函数执行完毕后,控制权返回到调用点,脚本继续执行(如果有更多代码的话)。

注意事项:

  • 函数定义中的大括号 {​ 和 }​ 用于界定函数体的开始和结束。

  • 函数调用时不需要括号 ()​,只需要函数名和参数。

  • 参数 $1​、$2​ 等在函数体内用于接收传递给函数的参数。

例子3

DemoFunc(){
	echo "hello world"
	echo "my name is $1,and is $2 years old"
}
DemoFunc xiaoyu 27

┌──(root㉿kali)-[~/work]
└─# bash 03.sh                                                                                                                 
hello world
my name is xiaoyu,and is 27 years old

┌──(root㉿kali)-[~/work]
└─#                           

函数定义部分:

  1. ​DemoFunc() {​:这是函数定义的开始。DemoFunc​ 是函数的名称,()​ 表示这是一个函数定义,而 {​ 表示函数体的开始。

  2. ​echo "hello world"​:这是函数体内的第一条语句。echo​ 是一个 Bash 命令,用于在终端输出文本。这里的文本是 "hello world"​,它会被显示在屏幕上。

  3. ​echo "my name is $1,and is $2 years old"​:这是函数体内的第二条语句。同样使用 echo​ 命令输出文本,但这次文本中包含了两个变量 $1​ 和 $2​。在 Bash 脚本中,$1​ 代表传递给函数的第一个参数,$2​ 代表第二个参数。当函数被调用时,$1​ 和 $2​ 会被替换为实际传递的参数值。

  4. ​}​:这是函数体的结束大括号,标志着 DemoFunc​ 函数定义的完成。

函数调用部分:

  1. ​DemoFunc xiaoyu 27​:这是对前面定义的 DemoFunc​ 函数的调用,并且传递了两个参数 xiaoyu​ 和 27​。当脚本执行到这一行时,会执行 DemoFunc​ 函数体内的代码,并将 xiaoyu​ 作为参数 $1​,将 27​ 作为参数 $2​ 传递给函数。

代码功能:

这段代码的功能是定义一个名为 DemoFunc​ 的函数,该函数的作用是首先输出 "hello world",然后输出包含两个参数的问候语。在调用 DemoFunc xiaoyu 27​ 时,首先 "hello world" 会被显示在屏幕上,紧接着是 "my name is xiaoyu,and is 27 years old"。

执行流程:

  1. 脚本开始执行。

  2. 遇到 DemoFunc()​ 函数定义,Bash 解释器会记录这个函数的定义,但不会立即执行。

  3. 脚本继续执行,直到遇到 DemoFunc xiaoyu 27​ 函数调用。

  4. 当调用 DemoFunc xiaoyu 27​ 时,Bash 解释器会跳转到 DemoFunc​ 函数的定义处。

  5. 执行函数体内的 echo "hello world"​ 命令,将 "hello world" 输出到控制台。

  6. 然后执行 echo "my name is $1,and is $2 years old"​ 命令,将 "my name is" 与参数 xiaoyu​ 结合,以及 "and is" 与参数 27​ 结合,输出 "my name is xiaoyu,and is 27 years old" 到控制台。

  7. 函数执行完毕后,控制权返回到调用点,脚本继续执行(如果有更多代码的话)。

注意事项:

  • 函数定义中的大括号 {​ 和 }​ 用于界定函数体的开始和结束。

  • 函数调用时不需要括号 ()​,只需要函数名和参数。

  • 参数 $1​、$2​ 等在函数体内用于接收传递给函数的参数,$1​ 是第一个参数,$2​ 是第二个参数,以此类推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值