Shell脚本学习--函数篇
问题:
工作需要,使用shell脚本对配置文件进行,配置初始化和修改,由于传入的参数十几个,操作繁复,需要几个功能模块。
a.像c语言一样传入两个数组,进行比较并执行配置和保存配置参数到文件。
b.输入参数无法直接进行确定
目标:
函数输入与输出
数组的输入输出
不定参数使用
一、函数输入输出
函数的输入(不定参数如何使用)
函数的输出(echo和$?)
# 函数的输入输出,echo和return
function fun_output_para ()
{
local sum=0;
until [ $# -eq 0 ] #判断输入参数是否读取完成
do
let sum+=$1;
shift #$1所代表的值将类推赋予下一个参数的值,如$1<--$2 $1<--$3;直至参数读取完毕
done;
echo ${sum}; #返回值方式1
# return ${sum}; #返回值方式2
}
使用
#返回值方式1时对应调用与显示output=`fun_output_para 1 2`echo ${output}使用返回值方式2时对应调用与显示fun_output_para 1 2echo $?
a、每次运行函数后传入的参数对应于$1 $2 ...${10}
b、传入参数的个数是$# c、使用‘shift’将使$1 $2 ....对应的参数值以下一个参数赋值 $1=$2 $2=$3 最后一个赋值为空
二、数组的输入与输出
# 数组输入,输出数组
function fun_inout_array ()
{
inputpar1=($1);
for ((i=0;i<${#inputpar1[@]};i++)) #for语句也像c语言般语法
{
temparray[$i]=$((${inputpar1[$i]} + 1));
}
echo ${temparray[*]};
}
#函数调用与输出显示:
input=(1 2 3 4)
aimArray=`fun_inout_array "${input[*]}"`;
echo ${aimArray[*]}