1.12函数和参数

我们可以创建执行特定任务的函数,也可以创建能够接受参数的函数

1)定义函数

function fname()

{

  statements;

}

或者

fname()

{

  statements;

}

2)只需要使用函数名就可以调用某个函数

$ fname; #意思是执行函数

3)参数可以传递给函数,并由脚本进行访问:

$ fname arg1 arg2 ;#传递参数

eg:在函数fname中,包含了各种访问函数参数的方法

fname()

{

  echo $1,$2;#访问参数1和参数2

  echo "[email protected]";#以列表的方式一次性打印所有参数

  echo "$*";#类似于[email protected],但是参数被作为单个实体

  return 0;#返回值

}

类似的,参数可以传递给脚本并通过script:$0(脚本名)访问。??????

$1和$2分别是第一个和第二个参数,以此类推。

"[email protected]"被扩展成“$1” "$2" "$3"等

“$*”被扩展成“$1c$2c$3c”,其中c是IFS的第一个字符。

"[email protected]"要比“$*”用的多。由于“$*”将所有的参数当做单个字符串,因此它很少被使用。

注意函数在脚本中定义之后,还需要调用,如果该函数需要参数,则还需要在函数名后面加上参数!!!!

补充内容:

1、递归函数

在bash中,函数同样支持递归(可以调用自身的函数),如

F()

{

  echo $1;

  F hello;

  sleep1;

}

Fork炸弹

:() {:|:&};:

这个递归函数能够调用自身,不断地生成新的进程,最终造成拒绝服务攻击。函数调用前的&将子进程放入后台。这段危险的代码会分支出2大量的进程,因而称为Fork炸弹。理解上面可参考http://en.wikipedia.org/wikiFork_bomb。

可以通过修改配置文件/etc/security/limits.conf来限制可生成的最大进程数来避开这枚炸弹。

2、导出函数

函数也能像环境变量一样用export导出,如此一来,函数的作用域就可以扩展到子进程中,如

export -f fname

3、读取命令返回值(状态)

通过下面的方式获取命令和返回值

cmd;

echo $?;

$?会给出命令cmd的返回值。

返回值被称为退出状态。它可用于分析命令执行成功与否。如

#!/bin/bash

CMD="command"#command指代你要检测退出状态的目标命令

$CMD

if [ $? -eq 0]

then

echo "$CMD executed successfully"

else

   echo "$CMD executed unsuccessfully"

fi

4、向命令传递参数

命令的参数能够以不同的格式进行传递。假设-p、-v是可选项,-k、-N是另一个可以接受数字的选项,同时该命令还接受一个文件名作为参数,那么,它有如下几种执行方式:

$command -p -v -k 1 file

$command -pv -k 1 file

$command -pvk 1 file

$command file -pvk 1

时间: 2024-11-06 07:16:30

1.12函数和参数的相关文章

javascript学习笔记(二):定义函数、调用函数、参数、返回值、局部和全局变量

定义函数.调用函数.参数.返回值 关键字function定义函数,格式如下: function 函数名(){ 函数体 } 调用函数.参数.返回值的规则和c语言规则类似. 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta chaset="UTF-8"> 5 <title></title> 6 </head> 7 <body

python 【第三篇】:函数及参数

1.函数的理解: 在学习函数之前,一直遵循:面向过程编程: 根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下: 1 while True: 2 if cpu利用率 > 90%: 3 #发送邮件提醒 4 连接邮箱服务器 5 发送邮件 6 关闭连接 7 8 if 硬盘使用空间 > 90%: 9 #发送邮件提醒 10 连接邮箱服务器 11 发送邮件 12 关闭连接 13 14 if 内存占用 >

C语言二维数组作为函数的参数

前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include <cstdio> void print(int *a[3]) { printf("%d\n",a[0][0]); } int main() { int a[2][3] = {1,2,3,4,5,6}; print(a); return 0; } 编译程序时候,在第10行提示错误信息:|

函数的参数详解

# 函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就算完成了. 对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了 函数内政部的复杂逻辑被封装起来,调用者无需了解. python的函数定义非常简单,单灵活度却非常大.除了正常定义的必选参数外, 还可以使用默认参数.可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数 还可以简化调用者的代码. 一.位置参数 我们先写一个计算x的平方的函数 def power(x): retu

&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 } 无参有返回值函数

day3-python的函数及参数

函数式编程最重要的是增强代码的重用性和可读性 1 2 3 4 def 函数名(参数):     ...     函数体     ... 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算,如:发送邮件.计算出 [11,22,38,888,2]中的最大数等... 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 以上要点中,比较重要有参数和返回值: 1.返回值 函数是一个功能块,该功能到底执行

Delphi中StrToDateTime函数TFormatSettings参数的使用

http://blog.csdn.net/arbin_he/article/details/7415300 Delphi中StrToDateTime函数TFormatSettings参数的使用 分类: Delphi2012-03-31 13:15 12267人阅读 评论(6) 收藏 举报 delphistring测试user [delphi] view plaincopy var FSetting : TFormatSettings; DateTime1: tDateTime; begin FS

C语言 结构体作为函数的参数

1)使用结构体变量作为函数的参数 使用结构体变量作为函数的实参时,采用的是值传递,会将结构体变量所占内存单元的内容全部顺序传递给形参,形参必须是同类型的结构体变量 demo: 1 # include <stdio.h> 2 # include <stdlib.h> 3 4 //创建一个Student结构 5 struct Student 6 { 7 char name[30]; 8 float fScore[3]; 9 }student={"dire",98.5

浅谈php函数的参数的设定规则

函数可以设定参数,也可以留空不进行设定. 1.当php函数设定形参,但是引用时实参不给,情况如下: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml&quo