shell编程-5

函数

函数定义

#方式一
 (){
	.....
}

参数作用域

#1、定义函数可以与系统命令相同,说明shell搜索命令时候,首先会在当前的shell文件#定义好的地方查找,找到直接执行。
#2、需要获得函数值:通过$?获得
#3、如果需要传出其它类型函数值,可以在函数调用之前,定义变量(这个就是全局变量)。在函数内部就可以直接修改,然后在执行函数就可以读出修改过的值。
#4、如果需要定义自己变量,可以在函数中定义:local 变量=值 ,这时变量就是内部变量,它的修改,不会影响函数外部相同变量的值 。
#!/bin/bash
	echo $(uname);
	declare num=1000;
	uname()
	{
	  echo "test!";
	  ((num++));
	  return 100;
	}
	testvar()
	{
	  local num=10;
	  ((num++));
	  echo $num;
	 
	}
	uname;
	echo $?
	echo $num;
	testvar;
	echo $num;
#调用脚本
	sh fun.sh
	Linux
	test!
	100
	1001
	11
	1001

函数传参

#函数内部以$1,$2...位置参数来传递 
#普通传参
myecho(){
echo "参数1: $1"
echo "参数1: $1"
}
#普通调用
myecho "test1" "test1"
#数组传参:使用${arrayName[@/*]}传入,函数中用$@/$*引用
arr=(1 2 3 4 5)
funcarr(){
	res=1
#   for i in $*
	for i in "$@"
	do
		res = $[$i * $res]
	done
	echo "$res"
}
#数组调用
result=`funcarr ${arr[@/*]}`
echo "this arr multiply is : $result"

函数返回值

#普通返回值
#函数的返回值$?(0-255)默认为函数最后一条命令的执行状态码
#eg1:使用return方式返回的值不可以超过255
fun1(){
 	retuen $[ $1 * 2 ]
}
fun1 "3"
echo "fun1 3 return : $?"
eg2:由于eg1的原因故不使用return
fun2(){
	echo $[ $1 * 2 ] 
}
result=`fun2 400`
echo "return is $result"
#返回数组
arr=(1 2 3 4)
arr2(){
 for i in "$@"
 do
     newarr[n++]=$[ $i * 2 ]
 done
 echo "${newarr[*]}"
}
result=`arr2 ${arr[*]}`
echo "${result[*]}"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值