`
vipshichg
  • 浏览: 266704 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Linux Shell函数方法简介

阅读更多

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

5
1
分享到:
评论

相关推荐

    linux shell 函数

    linux shell 函数

    linux shell基本语法经典以及函数简介

    linux下的shell编程,本人从事linux下的工作多年,总结了一些经验,希望能够帮助新童鞋快速学习linux,快速掌握shell脚本,提高工作效率

    Linux 在Shell脚本中使用函数实例详解

    Linux 在Shell脚本中使用函数实例详解 Shell的函数 Shell程序也支持函数。函数能完成一特定的功能,可以重复调用这个函数。 函数格式如下: 函数名() { 函数体 }  函数调用方式: 函数名 参数列表  实例:编写...

    linux_shell实例精解

    9. **Shell函数与别名**:如何定义和使用自定义函数,以及设置别名简化常用命令。 10. **案例分析**:书中可能会提供一些实际应用场景的脚本案例,如日志分析、系统维护等,帮助读者理解和应用所学知识。 "Linux ...

    linux shell学习资料

    《Linux Shell编程艺术》可能会详细讲述Shell的语法特性,包括变量、条件语句、循环结构、函数定义、输入/输出重定向等。这本书可能会深入探讨如何利用Shell的高级特性,如正则表达式、管道、进程控制和信号处理,来...

    Linux shell 函数

    本文将深入探讨Linux Shell函数的概念、创建、调用以及其在日常系统管理中的应用。 ### 1. Shell函数基础 Shell函数类似于其他编程语言中的函数,它是一段可重复使用的代码块,可以接受参数并返回值。在Shell中,...

    linux-shell的函数式编程工具

    通过熟练掌握这些Shell函数式编程技巧,你将能够编写出更加高效、可维护的脚本,从而提升Linux系统的自动化和管理效率。记住,实践是检验真理的唯一标准,多动手编写和调试Shell脚本,才能真正领会其精髓。

    Linux中的shell函数

    Linux中的shell函数Linux中的shell函数

    linux shell 视频教学

    Linux Shell是Linux操作系统中不可或缺的一部分,它是一种命令行接口,允许用户通过文本命令与系统进行交互。Shell脚本则是编写的一系列命令,可以自动化执行一系列任务,极大地提高了工作效率。在这个"Linux Shell...

    linux 中shell函数

    在Linux系统中,Shell脚本是用户与操作系统交互的重要方式,而Shell函数是编写复杂脚本时不可或缺的构造块。本文将深入探讨如何在Shell中定义、调用和使用函数,以及函数参数的传递和跨文件调用。 一、无参函数的...

    Linuxshell编写demo

    本文将深入探讨Linux Shell编写的基础知识,包括基本概念、常用命令、变量与参数、流程控制以及函数的使用。 首先,Shell是一个命令解释器,它接收用户输入的命令并执行。在Linux系统中,常见的Shell有Bash(Bourne...

    Linux+Shell命令行及脚本编程实例详解-刘艳涛.mobi kindle版

    主要内容包括:Linux及Linux Shell简介、初识Linux Shell、常用Shell(Bash)命令、Shell命令进阶、Shell编程基础、Shell的条件执行、Bash循环、Shell函数、正则表达式、脚本输入处理、Shell重定向、管道和过滤器、...

    linux shell 编程经典 教程

    五、Shell函数和流程控制 - case语句:根据不同的条件执行不同的代码块。 - exit:结束当前Shell脚本或子shell。 - trap:设置信号处理函数,当接收到特定信号时执行。 - jobs:查看和控制后台进程。 六、Shell脚本...

    LinuxShell编程基础.pdf

    Linux Shell 编程基础包括了解 Shell 的基本概念、Shell 变量、条件语句、循环语句、函数等。掌握这些基础知识后,可以编写出更加复杂的 Shell 脚本,实现自动化任务、数据处理、系统管理等功能。 1. Shell 变量 ...

    LinuxShell自动化运维-课后习题答案.docx

    1. Shell 函数:Shell 函数是一种编程方式,可以将一组命令封装成一个函数。例如 `hello() { echo "Hello World!"; }`。 2. Shell 数组:Shell 数组是一种数据结构,可以存储多个值。例如 `arr=(1 2 3 4 5)`。 3. ...

    Linux Shell 脚本攻略

    - **定义和调用Shell函数**:通过`function`关键字或直接使用函数名定义,通过函数名调用。 - **函数参数**:函数可以接收参数,类似于位置参数。 6. **输入/输出重定向** - **标准输入(stdin)、标准输出...

    Linux Shell Scripting Cookbook Second Edition

    《Linux Shell Scripting Cookbook 第二版》是一本系统讲解Linux Shell脚本编写方法的书籍,涵盖了超过110个实用的配方,用于解决真实世界中的Shell脚本问题。通过这些配方,读者可以学习到如何利用Shell脚本自动化...

    LinuxShell脚本编程实例

    Linux Shell脚本编程实例 Linux Shell脚本编程实例是指使用Linux Shell...Linux Shell脚本编程实例是Linux Shell脚本编程的基础,涵盖了 Linux Shell脚本编程的所有方面,包括变量、控制结构、函数、环境变量等等。

    linux shell 编程教材配套PPT

    5. **函数**:如何定义和调用Shell函数,提高代码复用性。 6. **参数处理**:脚本接收命令行参数的方式,以及特殊变量$0、$1、$*、$@等的含义和用法。 7. **Shell内置命令**:如source(使脚本立即执行,不创建新...

    Linux Shell 参考文档

    5. Shell函数:可以创建自定义的函数,提高代码复用性。 6. 正则表达式:在某些命令中,如`grep`,支持正则表达式进行复杂模式匹配。 通过阅读和理解这个“Linux Shell 参考文档”,你可以掌握Linux Shell的基本...

Global site tag (gtag.js) - Google Analytics