日期:
来源:Linux公社收集编辑:聆听世界的鱼
点击上方蓝字 ● 关注Linux公社
在 bash 中创建函数
function_name () {
commands
}
function function_name {
commands
}
除非您调用函数,否则函数永远不会运行/执行。 函数定义必须先于对该函数的任何调用。
#!/bin/bash
hello () {
echo "Hello World! Linux迷 www.linuxmi.com"
}
hello
hello
hello
在 bash 中返回函数值
#! /bin/bash
//Linux迷 www.linuxmi.com
error () {
blabla
return 0
}
error
echo "错误函数的返回状态为: $?"
error
函数将永远不会返回非零退出状态,因为 blabla 会导致 未找到命令 错误。将参数传递给 bash 函数
#!/bin/bash
#Linux迷 www.linuxmi.com
iseven () {
if [ $(($1 % 2)) -eq 0 ]; then
echo "$1 是偶数。"
else
echo "$1 是奇数。"
fi
}
iseven 5
iseven 2
iseven 28
iseven 199
#!/bin/bash
#Linux迷 www.linuxmi.com
fun () {
echo "$1 是 fun() 第一个参数。"
echo "$2 是 fun() 第二个参数。"
}
echo "$1 是脚本的第一个参数。"
echo "$2 是脚本的第二个参数。"
fun linuxmi 93139
bash 函数中的局部变量和全局变量
#!/bin/bash
#Linux迷 www.linuxmi.com
a1='X'
a2='Y'
myfun() {
local v1='Z'
v2='W'
echo "Inside myfun(): a1: $a1, a2: $a2"
}
echo "Before calling myfun(): v1: $a1, a2: $a2"
myfun
echo "After calling myfun(): a1: $a1, a2: $a2"
与全局变量同名的局部变量将优先于函数体内的全局变量。 您可以从函数内更改全局变量。
递归函数
#!/bin/bash
#Linux迷 www.linuxmi.com
factorial () {
if [ $1 -le 1 ]; then
echo 1
else
last=$(factorial $(( $1 -1)))
echo $(( $1 * last ))
fi
}
echo -n "4! is: "
factorial 4
echo -n "5! is: "
factorial 5
echo -n "6! is: "
factorial 6
if [ $1 -le 1 ]; then
echo 1
factorial(n) = n * factorial(n-1)
last=$(factorial $(( $1 -1)))
echo $(( $1 * last ))
链接:https://www.linuxmi.com/bash-1-functions.html
关注我们 长按或扫描下面二维码关注 Linux公社
关注 Linux公社,添加“ 星标 ”
每天 获取 技术干货,让我们一起成长
合作联系:root@linuxidc.net