阅读量: 46
函数和数组
一、函数的定义与调用
1. 函数的作用
- 函数可以将一个专门的功能进行封装,用于解决一个特定的问题,并且可以通过传递不同的参数给某个函数,实现处理不同数据的能力
- 函数的参数与脚本的参数比较类似
2. 函数的使用
- 函数名、参数、返回结果,其中函数名是必须的,参数和返回结果可选,根据需要进行处理
function 函数名()
{……}
或
函数名()
{ 命令1 }
示例:
# 定义一个函数
function add()
{
let sum=$1+$2
echo $sum # 函数的返回结果,注意,不是使用return 0
}
# 调用add函数
#resule=add 100 200
要将函数的输出结果赋值给某个变量,使用反引号或$()
result=$(add 100 200)
echo "result的结果是:$resule"
在上述示例中,在调用函数时,add 100 200 时,类似于命令的参数传递,并且在函数体中也是使用$1 $2的取值方式,没有编程意义上所谓的形参和实参
几个特殊的关于括号的用法
1、(()) 双圆括号,用与运算,可以代替expr,也可以用于for循环条件((i=1;i<=100;i+=2))
2、${} 可以取特定参数或变量的值,比如${1} ${username}
3、$()可以代替反引号执行圆括号中的命令
4、$[] 用于整数运算,可以代替expr
检查参数是否是一个目录(注意此处参数的调用)
function is_directory()
{
if [ -d $1 ]; then
echo "Great, $1 is a directory ..."
else
echo "sorry, $1 is not a direcrory ..."
fi
}
echo "check if the input is a directory ..."
is_directory $1
echo "check end ..."
二、参数返回值
function myfunc()
{
i=$1
j=$2
echo expr $i \* $j
}
result=mysunc 59 100
if [ $result -lt 6000 ]; then
echo "Too Low"
else
echo "Great"
fi
三、数组
在Bash中,可以采用显示的delare -a variable语句引入整个数组
如:declare -a weekday
weekday[0]=Sunday
weekday[1]=Monday
....
输出数组中的所有元素:${weekday[@]},输出某一元素${weekday[1]}
使用#字符求取整个数组有多少元素:echo ${weekday[@]}或echo ${weekday[*]}
还可以使用#号求取数组元素长度:echo ${weekday[0]},将输出6。
unset命令可以删除数组元素,甚至整个数组。如:
unset weekday[1],将去除wekday[1]的值。
unset weeday,将去除数组weekday所有元素的值。
通过赋值语句可以实现数组的复制,如:
array2="${array1[@]}"或array2=("$array1[@]")
deckare -a weekday
weekday[1]=Monday
weekday[2]=Tuerday
weekday[3]=Wednesday
weekday[4]=Thursday
weekday[5]=Friday
weekday[6]=Saturday
weekday[7]=Sunday
echo "This week has ${#weekday[*]} days"
echo "${weekday[@]}"
for day in 1 2 3 4 5 6 7
do
echo ${weekday[day]}
done
另外一种简单的数组定义方式:
wekday=(Monday Tuesday Wednesday Thuesday Friday Saturday Sunday)
echo ${weekday[1]}
也可以按照以下方式进行遍历:
for day in ${weekday[@]}
do
echo ${day}
done