之前我们学习了 shell 变量,引号,条件,循环的知识,现在一起学习函数。


终极 shell 脚本 快速入门指南 (六) 函数_字符串

函数

函数(function)可以看作是一个过程或者事务。函数封装了一个任务,通常是一系列代码指令的集合。大多数编程语言都提供了许多内置函数,例如计算数字的平方

在 shell 脚本中,我们可以通过两种方式定义函数。

1. 在同一个脚本中定义

2. 在不同脚本中定义,例如,可以定义许多有用的函数在library.sh

让我们一起看看如何在 shell 脚本中 定义和使用函数:





#定义函数print_date()  {  echo "Today is `date +"%A %d %B %Y (%r)"`"  return }#调用函数print_date

输出结果:


Today is Tuesday 15 October 2019 (10:24:00 PM)


终极 shell 脚本 快速入门指南 (六) 函数_字符串

函数参数

在 shell 脚本中,调用函数时可以传入参数。在函数内部,通过${n}来获取参数的值,$#表示传递到脚本的参数个数,$*表示以一个单字符串显示所有向脚本传递的参数,$@$*相同,但是使用时加引号,并在引号中返回每个参数。



funWithParam(){     echo "参数总数有 $# 个!"     echo "作为一个字符串输出所有参数 $* !"     for i in $@     do         echo "$i"     done     } funWithParam 白 玉 无 冰

输出结果:



参数总数有 4 个!作为一个字符串输出所有参数 白 玉 无 冰 !白玉无冰


终极 shell 脚本 快速入门指南 (六) 函数_字符串

退出状态

退出命令(exit),表示结束脚本,就像在C程序中一样。它还可以返回一个值,该值可用于脚本的父进程。



echo 白玉无冰exit 0echo exit

输出结果:


白玉无冰

每个命令都返回退出状态(有时称为返回状态或退出代码)。成功的命令返回0,不成功的命令返回非零值,该值通常可以解释为错误码。

当脚本没有退出状态码时,脚本的退出状态是脚本中执行的最后一条命令的退出状态(退出之前)。



echo 白玉无冰 exit #exit $?

上面的exit等同于exit $?

$? 是shell中的一个特殊变量,用于读取上一条执行的命令的退出状态。调用函数后,$?返回的是函数中最后执行的命令的退出状态。


funWithParam(){    echo "$@"    return 1;}funWithParam 白 玉 无 冰echo $?echo $?

输出结果:



白 玉 无 冰10