Shell编程-函数
时间:2020-02-23 14:45:08 来源:igfitidea点击:
在本教程中,我们将学习Shell编程中的函数。
什么是函数?
函数是为特定任务编写的代码块。
例如,简单兴趣函数将具有基于某些输入数据计算简单兴趣的代码。
Shell中的函数类似于其他编程语言(如C)中的子例程或者过程。
函数语法
以下是函数的语法。
function functionName() { # some code goes here... }
其中," functionName"是函数的名称。
名字之后,我们有左括号"()"。
函数的主体从" {"开始,在"}"结束。
在左花括号和右花括号" {}"中,我们具有函数的主体。
下面给出了创建函数的另一种方法。
functionName() { # body of the function }
函数名称
在命名函数时,我们遵循给定的规则。
- 名称必须以字母(a-z或者A-Z)开头或者下划线_
- 之后,我们可以使用字母(a-z和A-Z),下划线_和数字(0-9)
- 不要在函数名称中放置空格
- 不要使用诸如echo,printf等特殊关键字来命名函数
Example#01:编写一个Shell脚本以使用函数打印" Hello World"
在下面的示例中,我们将创建greetings
函数。
#!/bin/sh # create a function function greetings() { echo "Hello World" } # call the function greetings
$sh example01.sh Hello World
将参数传递给函数
我们还可以将参数传递给shell脚本中的函数,并使用$1,$2,$3 ...等变量访问它们,其中,$1指向第一个参数,$2指向第二个参数,依此类推。
Example#02:编写一个Shell脚本来创建一个接受用户名并显示问候消息的函数
在下面的示例中,我们将创建" greetings"函数,该函数接受一个参数并显示问候消息。
#!/bin/sh # create a function greetings() { echo "Hello " } # call the function greetings "theitroad"
$sh example02.sh Hello theitroad
Example#03:使用用户输入的名称编写一个Shell脚本以打印问候消息
在此示例中,我们将首先从用户那里获取名称,并将其保存在变量" name"中。
#!/bin/sh # function greetings() { echo "Hello " } # take user name printf "Enter your name: " read name # call the function greetings "$name"
$sh example03.sh Enter your name: theitroad Hello theitroad
返回码
我们使用" return"命令从函数返回值。
Example#04:编写一个Shell脚本来创建一个以数字作为参数并找到平方的函数。
成功返回0,否则返回1
为此,我们将创建" square"函数,该函数将数字作为参数。
#!/bin/sh # function square() { # if argument missing if [ -z "" ] then return 1 # return error code fi # assign argument to variable n n="" # find square result=`expr "$n * $n" | bc -l` return 0 # return success code } # take user input printf "Enter a number: " read num # call the function square "$num" # save the returned code from the above function call returnCode=$? if [ $returnCode -eq 0 ] then # display the result printf "Square of %d = %d\n" "$num" "$result" elif [ $returnCode -eq 1 ] then printf "Error Code: $returnCode Error: Number missing!\n" else printf "Error Code: $returnCode Error: Unknown!\n" fi
$sh example04.sh Enter a number: 5 Square of 5 = 25 $sh example04.sh Enter a number: Error Code: 1 Error: Number missing!
函数返回的值使用$来访问,因此,我们将其用于将返回值保存在变量$returnCode中。
注意!可以从脚本文件内部的函数外部访问" square"函数内的变量" result"。
因此,即使结果变量在平方函数内部,它也像全局变量一样。
这与我们从其他编程语言(例如C,C ++,Java等)中了解到的不同,因为不能直接从外部访问函数内部定义的变量。
Example#05:编写一个Shell脚本以根据用户输入来计算简单兴趣
#!/bin/sh # simple interest function simpleInterest () { p="" r="" t="" si=`expr "($p * $r * $t)/100" | bc -l` } # take user input printf "Enter Principal: " read pr printf "Enter Rate [0-100]: " read rt printf "Enter Time [in years]: " read tm # call function simpleInterest $pr $rt $tm printf "Simple Interest: %.3f\n" "$si"
$sh example05.sh Enter Principal: 100 Enter Rate [0-100]: 10 Enter Time [in years]: 2 Simple Interest: 20.000