Bash Shell 脚本函数示例
如何在 UNIX/Linux 操作系统下使用 Bash 创建 shell 脚本函数?
函数只不过是 Bash shell 脚本中的小子程序或下标。您需要使用函数将复杂的脚本分解为单独的任务。这提高了整体脚本的可读性和易用性。但是,shell 函数不能返回值。它们返回状态代码。
声明 Shell 函数
所有函数在使用前都必须声明。语法为:
function name(){ Commands }
或者
name(){ Commands return $TRUE }
您可以通过输入函数名称来调用它:
name
例子
创建一个名为file.sh的shell脚本:
#!/bin/bash # file.sh: a sample shell script to demonstrate the concept of Bash shell functions # define usage function usage(){ echo "Usage: $0 filename" exit 1 } # define is_file_exits function # $f -> store argument passed to the script is_file_exits(){ local f="$1" [[ -f "$f" ]] && return 0 || return 1 } # invoke usage # call usage() function if filename not supplied [[ $# -eq 0 ]] && usage # Invoke is_file_exits if ( is_file_exits "$1" ) then echo "File found" else echo "File not found" fi
运行如下:
chmod +x file.sh
./file.sh
./file.sh /etc/resolv.conf
任务:导出功能
您需要使用导出命令:
fname(){ echo "Foo" } export -f fname
任务:制作只读函数
您在脚本顶部创建函数并使用 readonly 命令设置 readonly 属性:
fname(){ echo "Foo" } usage(){ echo "Usage: $0 foo bar" exit 1 } readonly -f usage readonly -f fname
任务:局部变量函数
使用 local 命令创建局部变量:
#!/bin/bash # gloabal x and y x=200 y=100 math(){ # local variable x and y with passed args local x=$1 local y=$2 echo $(( $x + $y )) } echo "x: $x and y: $y" # call function echo "Calling math() with x: $x and y: $y" math 5 10 # x and y are not modified by math() echo "x: $x and y: $y after calling math()" echo $(( $x + $y ))
任务:递归
递归函数调用自身。递归是一种有用的技术,可以简化一些复杂的算法,并分解复杂的问题。
#!/bin/bash foo(){ # do something # if not false call foo foo } # call foo foo
有关更多详细信息,请参阅递归函数。
推荐阅读:
- 第 9 章:Linux shell 脚本 wiki 中的函数