`

linux 函数

 
阅读更多

1. 在shell文件内部定义函数并引用:

[~/shell/function]# cat factorial.sh 

#!/bin/bash

function factorial

{

factorial=1

for (( i=1;i <= $1;i++ ))

        do

        factorial=$[ $factorial * $i ]

        done

echo $1的阶乘是:$factorial

}

echo '程序名':$0,用于求阶乘

factorial $1

[~/shell/function]# ./factorial.sh 10

程序名:./factorial.sh,用于求阶乘

10的阶乘是:3628800

2.返回值

函数返回码是指函数最后一条命令的状态码,可以用于函数返回值

使用return命令手动指定返回值:

[~/shell/function]# cat return.sh 

#!/bin/bash

function fun1 {

  read -p "enter a: " a

  echo -n "print 2a: "

  return $[ $a * 2 ]

}

fun1

echo "return value $?"

[~/shell/function]# ./return.sh 

enter a: 100

print 2a: return value 200

由于shell状态码最大是255,所以当返回值大于255时会出错

[~/shell/function]# ./return.sh 

enter a: 200

print 2a: return value 144

3.函数输出

为了返回大于255的数、浮点数和字符串值,最好用函数输出到变量:

[~/shell/function]# cat ./fun_out.sh 

#!/bin/bash

function fun2 {

  read -p "enter a: " a

  echo -n "print 2a: "

  echo $[ $a * 2 ]

}

result=`fun2`

echo "return value $result"

[~/shell/function]# ./fun_out.sh     

enter a: 400

return value print 2a: 800

4.向函数传递参数(使用位置参数):

[~/shell/function]# cat ./parameter.sh 

#!/bin/bash

if [ $# -ne 3 ]

then

    echo "usage: $0 a b c"

    exit

fi

fun3() {

    echo $[ $1 * $2 * $3 ]

}

result=`fun3 $1 $2 $3`

echo the result is $result

[~/shell/function]# ./parameter.sh  1 2 3

the result is 6

[~/shell/function]# ./parameter.sh  1 2

usage: ./parameter.sh a b c

5.全局变量与局部变量

默认条件下,在函数和shell主体中建立的变量都是全局变量,可以相互引用,当shell主体部分与函数部分拥有名字相同的变量时,可能会相互影响,例如:

[~/shell/function]# cat ./variable.sh    

#!/bin/bash

if [ $# -ne 3 ]

then

    echo "usage: $0 a b c"

    exit

fi

temp=5

value=6

echo temp is: $temp

echo value is: $value

fun3() {

    temp=`echo "scale=3;$1*$2*$3" | bc -ql`   

    result=$temp

}

fun3 $1 $2 $3

echo "the result is $result"

if [ `echo "$temp > $value" | bc -ql` -ne 0 ]

then 

    echo "temp is larger"

else

    echo "temp is still smaller"

fi

[~/shell/function]# ./variable.sh  12 3 2

temp is: 5

value is: 6

the result is 72

temp is larger

在这种情况下,在函数内部最好使用局部变量,消除影响

[~/shell/function]# cat ./variable.sh 

#!/bin/bash

if [ $# -ne 3 ]

then

    echo "usage: $0 a b c"

    exit

fi

temp=5

value=6

echo temp is: $temp

echo value is: $value

fun3() {

    local temp=`echo "scale=3;$1*$2*$3" | bc -ql`   

    result=$temp

}

fun3 $1 $2 $3

echo "the result is $result"

if [ `echo "$temp > $value" | bc -ql` -ne 0 ]

then 

    echo "temp is larger"

else

    echo "temp is still smaller"

fi

[~/shell/function]# ./variable.sh  12 3 2

temp is: 5

value is: 6

the result is 72

temp is still smaller

6.向函数传递数组变量:

[~/shell/function]# cat array.sh 

#!/bin/bash

a=(11 12 13 14 15)

echo ${a[*]}

function array(){

  echo parameters : "$@" 

  local factorial=1

  for value in "$@"

  do

    factorial=$[ $factorial * $value ]

  done

  echo $factorial

}

array ${a[*]}

[~/shell/function]# ./array.sh 

11 12 13 14 15

parameters : 11 12 13 14 15

360360

7.函数返回数组变量

[~/shell/function]# cat array1.sh 

#!/bin/bash

a=(11 12 13 14 15)

function array(){

  echo parameters : "$@" 

  local newarray=(`echo "$@"`)

  local element="$#"

  local i

  for (( i = 0; i < $element; i++ ))

  {

    newarray[$i]=$[ ${newarray[$i]} * 2 ]    

  }

  echo  new value:${newarray[*]}

}

result=`array ${a[*]}`

echo ${result[*]}

[~/shell/function]# ./array1.sh 

parameters : 11 12 13 14 15 new value:22 24 26 28 30

分享到:
评论

相关推荐

    Linux函数详解(函数大全)

    本文将基于"Linux函数详解(函数大全)"这一主题,深入解析Linux C函数的使用和重要性,涵盖从基本输入输出到文件操作,再到进程控制等多个方面。 首先,我们从最基础的输入输出函数开始,如`printf`和`scanf`,...

    Linux函数大全_Linux函数大全_

    "Linux函数大全"是一部非常实用的参考资料,它涵盖了广泛的功能,旨在帮助开发者在日常编程中快速查找和理解所需的函数。下面,我们将深入探讨一些重要的Linux函数及其用途。 1. **标准输入输出**: - `printf` 和...

    常用Linux函数库大全

    这个“常用Linux函数库大全”涵盖了广泛的功能,对于学习和使用Linux系统的人来说,具有极高的参考价值。 首先,让我们了解一下Linux中的主要函数库: 1. **Glibc(GNU C Library)**:它是Linux系统中最基础的库...

    Linux函数大全.rar

    《Linux函数大全》是针对Linux操作系统中编程时常用的函数进行详尽整理的参考资料。这个.chm文件,全称为“Compiled HTML Help”,是一种Windows系统下的帮助文档格式,它将多个HTML页面整合在一个文件中,便于用户...

    linux函数手册.rar

    Linux函数手册是Linux系统开发人员和程序员的重要参考资料,它包含了大量与Linux系统调用和C标准库相关的函数信息。这份rar压缩包文件很可能是Linux系统的man手册页的集合,其中详细记录了各种函数的用途、参数、...

    易语言源码易语言调用linux函数源码.rar

    易语言源码易语言调用linux函数源码.rar 易语言源码易语言调用linux函数源码.rar 易语言源码易语言调用linux函数源码.rar 易语言源码易语言调用linux函数源码.rar 易语言源码易语言调用linux函数源码.rar ...

    C/C++/Linux函数函数插桩(打桩)指南

    1. 函数插桩的基本概念 插桩是一种软件工程中的技术,主要用于...在Linux环境下,开发者可以根据实际需求选择合适的插桩阶段和方法,灵活地实现插桩功能。理解并熟练运用插桩技术,可以极大地提升开发效率和软件质量。

    c++钩子函数:copy hook_linux函数hook

    总结来说,"c++钩子函数:copy hook_linux函数hook"是一个C++项目,它在Linux环境下实现了文件复制操作的监控和控制,可能通过内核模块、用户空间钩子或两者结合的方式。项目使用了ATL库来创建COM接口,并提供了类型...

    易语言调用linux函数

    在易语言中调用Linux函数,主要是为了利用Linux系统的丰富功能和强大的系统级操作能力。这一过程涉及到动态链接库(DLL)的加载、函数地址获取以及函数调用等技术。下面将详细阐述这些知识点。 首先,`load_so`通常...

    Linux函数大全

    Linux函数大全

    C C++ Linux函数手册大全

    《C C++ Linux函数手册大全》是一份涵盖了C语言、C++语言以及Linux系统编程的综合性参考资料,旨在为程序员提供详尽的函数解释和使用示例。这份手册的全面性使得开发者无需在不同资源间频繁查找,从而提高开发效率。...

    Linux函数祥解

    "Linux函数详解"的主题聚焦于深入理解Linux环境下的C语言函数,这对于系统级编程、驱动开发以及嵌入式系统的开发者来说尤为关键。Linux内核是用C语言和少量汇编编写,因此熟悉这些函数对于理解和定制Linux系统至关...

    linux 函数学习手册

    Linux函数学习手册是一份详尽的资源,专为那些希望深入了解Linux系统编程的开发者和爱好者设计。手册可能包含了从基本的系统调用到高级的编程技术的所有内容,旨在帮助读者理解如何在Linux环境下使用C语言进行高效...

    linux函数大全 较全面涵盖linux函数,方便查阅

    Linux函数大全,正如其标题所示,是一份详尽的资源,涵盖了Linux系统中广泛使用的各种函数。这份文档,以HTML格式呈现,旨在为开发者提供一个便捷的参考工具,特别是对于那些正在深入学习Linux编程和系统级开发的人...

    易语言调用linux函数源码

    标题提到的“易语言调用Linux函数源码”,意味着我们将探讨如何在易语言中利用源代码与Linux操作系统进行交互。 在Linux环境下,系统调用是程序与操作系统内核沟通的桥梁。这些调用提供了诸如文件操作、进程管理、...

    linux函数查询器用户使用手册借鉴.pdf

    "Linux函数查询器用户使用手册借鉴.pdf" 本资源手册是关于Linux函数查询器的使用手册,旨在帮助用户快速理解和使用C语言库函数。该手册涵盖了产品简介、产品特色、详细功能介绍、产品使用、FAQ、许可授权等方面的...

    Linux C函数库参考手册完整版 含Linux C函数使用手册chm 中文pdf格式

    Linux C函数库参考手册是一套Linux C函数使用手册,这里还提供了LinuxC函数手册chm,帮助大家查找。在Linux下,使用到的C语言函数中文手册,全都有实例,如果你是大神,完全不需要,如果你对英文的手册感到头疼,...

    Linux函数参考手册

    Linux函数参考手册是一份极其宝贵的资源,它涵盖了Linux系统编程中的各种函数,为开发者提供了详细的使用指南和示例。在Linux环境下,系统调用和C库函数是开发人员进行低级编程、操作文件、网络通信、进程管理等任务...

    Linux函数手册等.zip

    这个名为"Linux函数手册等.zip"的压缩包显然包含了与Linux操作系统和C++编程语言相关的资源。让我们深入探讨一下这两个主题的知识点。 首先,我们关注C++,这是一种静态类型、编译式的通用编程语言,以其面向对象...

    linux函数堆栈操作过程

    堆栈是一种先进后出的数据结构,是计算机中最常用的一种数据结构,堆栈可以用数组 实现,也可以用链表实现。其中,堆(heap)中存放的是用malloc 分配地址的动态变量或 c++中的对象等数据;栈(stack )又称称为堆栈...

Global site tag (gtag.js) - Google Analytics