[9-13]Shell系列7——函数及参数传递

本文旨在复习shell函数作用、定义、嵌套、删除、终端调用、返回值、参数传递

知识储备


  • 函数:即Functions,把一组实现通用功能的独立的代码模块[通常里面是变量,可变的参数组成]封装在一起,并给予命名;后续用到时,可直接通过给定函数名来调用整体代码
  • 函数作用:<1>代码重用 <2>模块化编程
  • 函数使用:<1>先定义:编写函数代码 <2>后调用:调用函数,按需传递参数[非必需]

函数定义及调用



函数定义格式主要有2种,如下:


1
2
3
4
5
6
7
8
9
10
11
12


function Fun_Name () {
    函数体
    ...
    [ return value ]
}
#--------------------------->#

Fun_Name () {
    函数体
    ...
    [ return value ]
}

<1>第一种,使用关键字function申明函数名

<2>第二种,直接用函数名来,本质上没有多大区别,为了可读性,建议采用第一种

调用方式:直接使用函数名,不需要带


1
2
3
4


function sum () {
    echo "$[$1+$2]"
}
sum $1 $2


函数嵌套



函数之间可以彼此嵌套,当一个函数依赖于另一个小函数的时候可以这么用,举个例子

实现代码


1
2
3
4
5
6
7
8
9
10
11


#!/bin/bash

function fun1 () {
    echo "This is fun1."
}

function fun2 () {
    echo "This is fun2."
    fun1 
}
fun2

函数删除



变量可以使用unset删除,那么函数也可以删除,不过谁会这么蛋疼?


1


unset .f function_name

终端调用



如果想在终端使用自己定义的函数,那么可以将函数定义放在.profile这类文件中

当然了profile文件,根据以前所学的知识

全局profile--->   /etc/profile /etc/profile.d/*.* [这里有众多脚本文件在开机后自执行]

个人profile ---> ~/.bash_profile

例1:在所有用户定义一个函数sumsum求2个数的合,并且可以在终端直接调用

在/etc/profile中定义好函数后,需要重新加载一下profile文件[注销 或 source /etc/profile ]

返回值



命令执行结果有2种:执行结果 + 执行状态结果。执行状态结果是0-255的数值,0成功,其他失败。

函数返回值其实就是状态结果,用来表示函数执行成功与否,就是之前说的$?这个特殊变量的值。

用户可以使用[ return value ]自定义函数值

例1:定义一个自定义返回值的函数执行


1
2
3
4
5
6
7


#!/bin/bash

function fun1 () {
    echo "This is fun1."
    return 188
}
fun1

注意点:

<1>函数返回值只能是0-255的整数,其中0标识成功,1-255表示失败

<2>函数代码执行时,一旦遇到return,函数代码终止执行,返回自定义的函数值[如果有的话]

<3>函数返回值引入的好处是:若一个程序导致错误的情况有多种,假设每种错误都分别定义函数返回值,那么维护和调试会简单许多!

参数传递



参数传递不仅仅供函数体调用,任何想要调用的脚本代码只需要遵循语法格式写出调用语句即可调用。

在执行脚本时,后续加入多个参数,即所谓的将参数传递进脚本,如下

例1:为脚本传递多个参数,并调用这些参数

实现代码


1
2
3
4
5
6


#!/bin/bash

echo "The first paramater is  $1"
echo "The second paramater is $2"
echo "Paramaters Counts  -->  $#"
echo "All Paramaters are -->  [email protected]"

红框的"1 2 3"即传递参数给该脚本,这里的$1, $2即对传递的参数的引用,其实本质是特殊变量。

$# 传递参数的总个数, [email protected] 打印输出全参数。还有别的特殊变量及用法 --> 参考 [9-13]Shell系列2——变量基础

时间: 2024-12-13 09:55:37

[9-13]Shell系列7——函数及参数传递的相关文章

shell函数【参数传递及输入输出】&amp;内置函数

Linux--shell脚本基础3:shell函数[参数传递及输入输出]&内置函数 函数定义 1 退出状态 1 参数传递 2 标准IO 2 脚本调试 2 AND&OR 3 内置命令补充 3 函数定义 函数定义: 在Shell 中,函数就是一组命令集或语句形成一个可用块 函数增强了shell的可编程能力 组成 function_name(){ statements } 函数名(在一个脚本中必须唯一) 函数体(命令集合) 注意 shell中不存在向前声明(先定义后使用) 必须在调用一个函数之前

[9-13]Shell系列2——变量基础

本文旨在复习shell变量定义.使用变量.删除变量.只读变量以及变量类型.特殊变量实例 知识储备 变量本质上是内存空间中的一块指定区域,其数据内容会发生变化: 变量名本质是个指针,指向这个数据变化的内存空间,那么在命令执行或者操作时,只需要通过变量名,就能够随时调用那个变化的数据,很方便 Shell脚本中变量和大多编程语言一样,有全局的,也有局部的[比如作用于一个function函数] 值得一提的是,shell是弱类型编程语言 弱类型:变量无需事先申明,直接可用[为空] 强类型:变量使用前,必须

面向对象----构造方法、this 关键字、函数的参数传递、package语句/import语句

构造方法 构造器的定义.作用 构造方法的特征 它具有与类相同的名称:它不含返回值: 注意:在构造方法里不含返回值的概念是不同于"void"的,在定义构造方法时加了"void",结果这个方法就不再被自动调了. 构造方法的作用 当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码.这就好像我们规定每个"人"一出生就必须先洗澡,我们就可以在"人"的构造方法中加入完成"洗

&lt;10&gt; 无参无返回值+ 无参有返回值函数的定义+有参无返回值函数定义+ 有参有返回值函数定义+函数的参数+函数的参数传递过程

无参无返回值: 1 #include <stdio.h> 2 3 4 /** 5 * 定义一个无参无返值函数 6 * 7 */ 8 void print_line(){ 9 10 printf("-----------------\n"); 11 12 } 13 14 15 16 int main(int argc, const char * argv[]) { 17 //调用函数 18 print_line(); 19 20 return 0; 21 } 无参有返回值函数

Linux Shell系列教程之(三)Shell变量

本文是Linux Shell系列教程的第(三)篇,更多shell教程请看:Linux Shell系列教程 Shell作为一种高级的脚本类语言,也是支持自定义变量的.今天就为大家介绍下Shell中的变量相关知识. 为使Shell编程更有效,系统提供了一些Shell变量.Shell变量可以保存诸如路径名.文件名或者一个数字这样的变量名. Shell将其中任何设置都看做文本字符串.有两种变量,本地和环境.严格地说可以有 4种,但其余两种是只读的,可以认为是特殊变量,它用于向Shell脚本传递参数. 定

Python中函数的参数传递与可变长参数

1.Python中也有像C++一样的默认缺省函数 1 def foo(text,num=0): 2 print text,num 3 4 foo("asd") #asd 0 5 foo("def",100) #def 100 定义有默认参数的函数时,这些默认值参数位置必须都在非默认值参数后面. 调用时提供默认值参数值时,使用提供的值,否则使用默认值. 2.Python可以根据参数名传参数 1 def foo(ip,port): 2 print "%s:%d

pandas.DataFrame学习系列2——函数方法(1)

DataFrame类具有很多方法,下面做用法的介绍和举例. pandas.DataFrame学习系列2--函数方法(1) 1.abs(),返回DataFrame每个数值的绝对值,前提是所有元素均为数值型 1 import pandas as pd 2 import numpy as np 3 4 df=pd.read_excel('南京银行.xlsx',index_col='Date') 5 df1=df[:5] 6 df1.iat[0,1]=-df1.iat[0,1] 7 df1 8 Open

Linux中的shell脚本编程——函数

概述: 本章节将总结while,for循环语句的特殊用法,在不同的场景当中,更能发挥其功能和价值.除此之外,还会介绍一种特殊的循环语句select语句,实现菜单的作用.最重要的是讲解shell脚本编程中函数的用法.这些内容都要熟练掌握. 一.循环语句的特殊用法: 1.while循环的特殊用法(遍历文件的每一行): □语法:while read line; do 循环体 done < /PATH/FROM/SOMEFILE □意义:依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将

8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下

8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 # 8.10 shell 特殊符_cut命令 --- - * 任意个任意字符 - ?任意一个字符 -  井号#注释字符  写命令的时候前面加一个#,那么这条命令就不生效,包括shell脚本里面也是,前面加个#表示这一行不生效,可以加一些注释说明的文字 ``` <[email protected] ~># #ls a.txt <[email