创建函数
function name {
commands
}
name() {
commands
}
函数返回值
1 . 默认的退出状态码
函数运行结束时会返回一个退出状态码(函数中最后一条命令返回的退出状态码)。
$? 用该变量查看函数的退出状态码。
2 . 使用return命令
return命令允许指定一个整数值来定义函数的退出状态码。
注意:退出状态吗必须是0~255,如果return值 > 256,则会产生一个错误值。
func abc {
read -p "Enter a value: " value
echo "the input value is :"
echo $value
}
result=$(abc)
echo "the new value is $result"
output:
$: ./test.sh
Enter a value: 100
the input value is :
100
在函数中使用变量
1 . 向函数传递参数
#!/bin/bash
function addem {
if [ $# -eq 0 ] || [ $# -gt 2 ]
then
echo -1
elif [ $# -eq 1 ]
then
echo $[ $1 + $1 ]
else
echo $[ $1 + $2 ]
fi
}
echo -n "Add 10 and 15: "
value=$(addem 10 15)
echo $value
echo -n "Let's try adding just one number: "
value=$(addem 10)
echo $value
echo -n "Now trying adding no numbers: "
value=$(addem)
echo $value
echo -n "Finally,try adding three numbers: "
value=$(addem 10 15 20)
echo $value
由于函数使用特殊参数环境变量作为自己的参数值,因此它无法直接获取脚本在命令行中的参数值。
2 . 在函数中处理变量
一般情况下,如果在脚本的主体部分定义了一个全局变量,那么可以在函数内访问它;如果在函数内定义了一个全局变量,可以在脚本主体部分访问它。
定义局部变量:
local temp
local temp=$[ $value + 5 ]
local关键字保证了变量只局限在该函数中。
数组变量和函数
1 . 向函数传递数组参数
#!/bin/bash
function testit {
local new_array
new_array=`echo $@`
echo "the new array value is ${new_array[*]}";
}
myarray=(1 2 3 4 5 6)
echo "the original array is ${myarray[*]}"
testit ${myarray[*]}
function addarray {
local sum=0
local newarray
newarray=$(echo "$@")
for value in ${newarray[*]}
do
sum=$[ $sum + $value ]
done
echo $sum
}
myarray=(1 2 3 4 5)
echo "the original array is: ${myarray[*]}"
arg1=$(echo ${myarray[*]})
result=$(addarray $arg1)
echo "the result is $result"
output:
the original array is 1 2 3 4 5 6
the new array value is : 1 2 3 4 5 6
the original array is: 1 2 3 4 5
the result is 15
2 . 从函数返回数组
从函数里向shell脚本传回数组变量的方法: 函数用echo语句来按正确顺序输出单个数组值,然后脚本再将他们重新放进一个新的数组变量中。
创建库
shell中怎么使用库文件?
a). 首先创建一个库文件
b). 在脚本文件中引用库文件,使用库文件中的函数
关键在于:怎么引用库文件?
使用函数库的关键在于 source命令
:该命令会在当前shell上下文中执行命令,而不是创建一个新shell。
使用 source命令
来在shell脚本中运行库文件脚本,这样就可以使用库中的函数了。
. ./funcLib #source命令的别名:点操作符
. /home/rich/libraries/myfuncs
如何直接在命令行上直接运行函数
方法一:直接在命令行上创建函数, 然后在命令行上调用该函数即可。
方法二: 在 .bashrc文件中定义函数 将函数直接定义在这个文件中,这个文件在每次启动一个新的shell的时候,都会由shell重新载入。
原文链接:https://www.f2er.com/bash/390126.html