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

