首页 > 系统相关 >Day6: Shell函数和参数传递

Day6: Shell函数和参数传递

时间:2023-07-29 22:24:16浏览次数:44  
标签:function Shell 函数 Day6 参数传递 square 参数 返回值 定义

学习目标学习内容1. 函数的定义和调用2. 参数传递3. 返回值4. 练习任务大树哥个人信息

学习目标

  • 学习Shell中函数的概念和用法。
  • 理解如何在函数中定义和调用命令序列。
  • 掌握如何传递参数给函数并获取返回值。
  • 练习编写脚本,使用函数进行模块化编程。

学习内容

今天我们将学习如何在Shell编程中定义和使用函数,以及如何传递参数给函数。

1. 函数的定义和调用

在Shell中,我们可以使用function关键字或直接使用函数名来定义函数。

 1# 使用`function`关键字定义函数
2function my_function() {
3    # 命令序列
4    command1
5    command2
6}
7
8# 直接使用函数名定义函数
9my_function() {
10    # 命令序列
11    command1
12    command2
13}

我们可以通过函数名来调用函数,并执行函数中定义的命令序列。

1my_function

2. 参数传递

我们可以向函数传递参数,并在函数中获取参数的值。在函数中,可以使用$1$2等变量来引用传递给函数的参数。

1# 传递参数给函数
2my_function() {
3    echo "Hello, $1!"
4}
5
6# 调用函数并传递参数
7my_function "daShuGe"

在上述示例中,我们向函数my_function传递参数daShuGe,并在函数中使用$1来获取参数的值 ,执行结果Hello, “daShuGe”!

3. 返回值

函数可以使用return语句返回一个值。函数的返回值可以通过$?来获取。

 1# 定义带返回值的函数
2get_square() {
3    local num=$1
4    local square=$((num * num))
5    return $square
6}
7
8# 调用函数并获取返回值
9get_square 5
10result=$?
11
12echo "The square is: $result"

在上述示例中,函数get_square计算传入参数的平方,并使用return语句返回结果。我们通过$?来获取返回值并将其存储在变量result中,执行结果为“The square is:25”

4. 练习任务

 1# 定义函数,打印传入的参数
2print_name() {
3    echo "Hello, $1!"
4}
5
6# 调用函数并传递参数
7print_name "Alice"
8
9# 定义函数,计算两个数的和并返回结果
10add_numbers() {
11    local num1=$1
12    local num2=$2
13    local sum=$((num1 + num2))
14    return $sum
15}
16
17# 调用函数并获取返回值
18add_numbers 10 20
19result=$?
20
21echo "The sum is: $result"

在练习任务中,我们定义了两个函数:print_name用于打印传入的参数,add_numbers用于计算两个数的和并返回结果。我们调用这两个函数,并传递相应的参数。

大树哥个人信息

  • 网名:大树哥
  • 8年以上数据库中间件经验,专注于数据库中间件运维,Oracle、MySQL、Weblogic、WebSphere、Tomcat、Nginx等;
  • Oracle 19c OCP,软考数据系统工程师,系统规划与管理师高级等认证
  • 微信公众号: AI智能提效开发运维

标签:function,Shell,函数,Day6,参数传递,square,参数,返回值,定义
From: https://www.cnblogs.com/weixuexi/p/17590661.html

相关文章

  • Day6
    Day6T1没啥玩意好说的,就是别忘删freopen#include<bits/stdc++.h>#definelllonglong#defineullunsignedlonglong#definegtgetcharusingnamespacestd;inlinellread(){llx=0,f=1;charch=gt();while(!isdigit(ch)){if(ch=='-')f=-1;ch=gt()......
  • Linux Shell脚本中的空格
    =等号两边必须无空格,否则报错;如:i=$1和i=$1都是错误的。但是在()内部不限制如for((i=1;i<3;i=i+1))(())内外括号之间无空格,写成(())这样会报错。但内部括号不限制如s=$(($i+1))[]是条件判断式,所以前后内部都必须有空格。其内部元素之间必须有空格才能识别,否则一律......
  • xshell连接liunx服务器身份验证不能选择password
    ssh用户身份验证不能选择password 只能用publickey的解决办法 问题现象使用密码通过Workbench或SSH方式(例如PuTTY、Xshell、SecureCRT等)远程登录ECS实例时,遇到服务器禁用了密码登录方式错误. 可能原因该问题是由于SSH服务对应配置文件/etc/ssh/sshd_config中的参数Pa......
  • 7.29 day6数学
    如果没问题就是300T1线性筛里,每个数都会被他最小的质因数筛到,令\(f(x)=[x\%p==0]\quadp\indangerous\)这显然是个完全积性函数,线性筛即可时间复杂度:\(O(n)\)T2考虑这棵树实质上是一个以1为根,边权为大于父亲边权的质数,节点值则为到根路径上边权累乘那么我们要求x,y之间......
  • FinalShell软件的下载
    1、FinalShell软件介绍FinalShell是一款免费的国产的集SSH工具、服务器管理、远程桌面加速的良心软件2、安装过程1、FinalShell下载地址:http://www.hostbuf.com/downloads/finalshell_install.exe下载完成之后,打开所在文件夹,然后双击进行下载:2、安装下载(路径一定要无中文、......
  • log4j2---基于vulhub的log4j2漏洞复现---反弹shell
    基于vulhub的log4j2漏洞复现---反弹shell1.方法一环境准备:和我上一篇fastjson1.2.24漏洞复现是一样的环境,方法也差别不大声明:遵纪守法,仅作学习记录用处,部分描述文字源于网络,若侵权联系删除老演员:centos8:192.168.59.135vulhub靶场win10:192.168.59.130攻击机......
  • windows下shellcode注入的例子(WriteProcessMemory+CreateRemoteThread)
    vs里x64编译如下代码:  #include<iostream>#include<Windows.h>//#include"common.h"intmain(){ //msfvenom-pwindows/x64/execCMD=notepad.exe-fc unsignedcharshellcode[]= "\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x0......
  • 使用Go调用Powershell加域
    packagemainimport( "fmt" "github.com/go-ldap/ldap/v3" "github.com/mozillazg/go-pinyin" "os" "os/exec" "strings" "time")funcChineseToAbbreviation(chinesestring)string{......
  • DAY6
    指针练习声明变量:pstr是一个指向数组的指针,该数组内含20个char类型的值char(*pstr)[20];编写一个函数,返回储存在int类型中数组中的最大值,并在一个简单的程序中测试该函数#include<stdio.h>intget_max(intnumber[],intn){intmax=number[0];inti;......
  • shell 钉钉告警脚本
    #!/bin/bash#钉钉告警functionsend_notify(){curl'https://oapi.dingtalk.com/robot/send?access_token=xxxx'\-H'Content-Type:application/json'\-d'{"msgtype":"markdown",&......