13 函数

传递参数

在bash shell 编程中, 向函数传递的参数仍然是位置参数的方式来传递的, 而不能传递数组等其他形式的变量, 这与C语言
或JAVA语言的函数传递是不同的.

#!/bin/bash

half()
{
let "n = $1"
let "n = n/2"
echo "In function half() n is $n"
}

#函数调用
let "m = $1"
echo "Before the function half() is called, m is $m"
half $m # 注意, 函数执行时, 不带()
echo "After the function half() is called, m is $m"

函数返回值

有时需要脚本执行完成后返回特定的值来完成脚本的后继操作, 在linux shell编程中, 函数是通过 return 返回其退出状态, 0表示无错误, 1表示有错误
在脚本中可以有选择的使用 return 语句.
看来, 返回值, 只是一个标记, 跟脚本返回值一样.

函数调用

首先, 函数之间可以调用, 后边的可以调用自己(递归调用)或前边的函数
比如有多个函数, 顺序执行函数
show_week
show_number
show_square

在函数内部调用其他函数
choice()
{
case $char in
s)
square;;
c)
cube;;
p)
power;;
*)
echo "What you input is wrong!";;
esac
}

局部变量和全局变量

首先, 局部变量定义, 另外, 局部变量可以和全局变量同名, 并且在函数内, 全局变量会被局部变量隐藏(跟C一样)
use_local_var()
{
local text="local variable"
}
另外, 如果你在函数外部定义了一个变量, 在函数内部没有使用 local 来声明跟外部同名的变量, 那么, 这两个变量实际上是一个地址,
如果你修改了这个变量在函数内部, 那么也会直接影响着函数外边的结果, 例如:

#!/bin/bash
count=1
echo "$count" # 结果是1

int_count()
{
count=2
echo "$count2" # 结果是2
}

echo "$count" # 结果是2, 注意这里, 外部变量的结果已经变了

时间: 2024-10-14 00:45:10

13 函数的相关文章

13.函数的类型和基本使用

第一:函数类型: /* 函数类型: 类似于C语言的指向函数的指针 类似于OC语言的block 函数类型是由函数的参数类型和返回值类型组成的 */ // 这两个函数的类型是 (Int, Int) -> Int func sum(a: Int, b: Int) ->Int { return a + b; } func sub(a: Int, b: Int) ->Int { return a - b; } // 可以利用函数类型定义函数变量和常量 var funcP:(Int, Int) -&

python基础13函数以及函数式编程

主要内容 函数基本语法及特性 参数与局部变 返回值 4.递归 名函数 6.函数式编程介绍 阶函数 8.内置函数 函数基本语法及特性 定义 数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一 个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变 量,y是x的函数.自变量x的取值范围叫做这个函数的定义域. 但编程中的「函数」概念,与数学中的函数是有很 同的 函数是逻辑结构化和过程化的一种编程方法 函数的优点 减少重复代码 使程序变的可扩展 使程序

C语言基础(13)-函数

一. 函数的原型和调用 在使用函数前必须定义或者声明函数. double circle(double r); int main() { double length = circle(10); printf("length = %f\n", length); return 0; } double circle(double r) { return 2 * 3.14 * r; } 二. 函数的形参和实参 在调用函数的时候,函数大多数都有参数,主调函数和被调用函数之间需要传递数据. 在定义函

python基础13 ---函数模块3(正则表达式)

正则表达式 一.正则表达式的本质 1.正则表达式的本质(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. 2.正则表达式简介 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分 强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的

2018.7.13 函数的进阶

1. 动态参数 位置参数的动态参数: *args 动态接收参数的时候要注意: 动态参数必须在位置参数后面 顺序: 位置参数, 动态参数*, 默认值参数 例子: def chi(a, b, *food, c="娃哈哈"): print(a, b, food, c) chi("香蕉", "菠萝") # 香蕉 菠萝 () 娃哈哈 默认值?生效 chi("香蕉", "菠萝", "葫芦娃") #

python基础13 ---函数模块4(configparser模块)

configparser模块 一.configparser模块 1.什么是configparser模块:configparser模块操作配置文件,配置文件的格式与windows ini和linux的cf文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值),其配置文件(INI文件)由节(section).键.值组成. 2.configparser模块简介. ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号"[ ]"内包含的为sect

gets()、puts()函数。字符串函数。字符串排序的例子。

1.实例程序:string.c的程序: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include<stdio.h> #define MSG "YOU MUST have many talents .tell me some." #define LIM 5 #define LINELEN 81 int main() { char name[LINELEN]; char

(九)JavaScript之【JS函数(定义、参数、调用、【闭包】)】[较深,胆小勿进]

定义: 1 /** 2 * 函数表达式 3 * 4 * Function() 构造函数 5 * 6 * 函数提升(Hoisting) 7 * JavaScript默认将当前作用域提升到前面去 8 * Hoisting应用在变量的声明和函数的声明 9 * [使用表达式定义函数时无法提升] 10 * 11 * 自调用函数 12 * 13 * 函数是对象*/ 1 //函数表达式储存在变量中 2 var x = function () { return 'message'; }; 3 4 console

Scheme高阶函数之函数作为返回值暨currying/柯里化

1.4.1currying/柯里化 通常,编程的函数可以有一个参数列表,而λ表达式要求单参数.所以,currying/柯里化--多个参数的函数转化为只有一个参数的多个函数的连续调用,需要函数作为返回值. 有λ表达式,λx. λy. ( 2x+3y) (define (F x y)(+ ( * 2 x) (* 3 y)));;;等价于下面的表示 (define F (lambda ( x y) (+ ( * 2 x) (* 3 y)) ) ) (F 2 3)            → 13 函数F