#函数示例functionfunc1 {echo"This is an example of a function"
}
count=1while [ $count -le 5 ]
do
func1
count=$[$count + 1 ]
echo"count:"$count
done
echo"This is the end of the loop"
func1
echo"Now this is the end of the script"
#获取函数返回值functiondb1 {#read -p "Enter a value: " value
value=3echo $[ $value * 2 ]
}
result=$(db1)
echo"The new value is $result"
#向函数传递参数
function addem {
if [ $#-eq0 ] || [ $#-gt2 ]
thenecho -1elif [ $#-eq1 ]
thenecho $[ $1 + $1 ]
elseecho $[ $1 + $2 ]
fi
}
echo -n "Adding 10 and 15:"
value=$(addem 1015)
echo$value
#通过脚本直接传递参数,函数也使用了$1和$2变量,但它们和脚本主体中的$1和$2变量并不相同。要在函数中#使用这些值,必须在调用函数时手动将它们传过去
function badfunc1 {
echo $[ $1 * $2 ]
}
if [ $#-eq2 ]
then
value=$(badfunc1 $1$2)
echo"The result is $value"elseecho"Usage: badtest1 a b"fi
#shell脚本局部变量
function func1 {
local temp=$[ $value + 5 ]
echo"The local temp is $temp"
result=$[ $temp *2 ]
}
temp=4
value=6
func1
echo"The result is $result"echo"The global temp is $temp"if [ $temp-gt$value ]
thenecho"temp is larger"elseecho"temp is smaller"fi
#向脚本中传入数组,此种方法只能传一个参数
function testit {
echo"The parameters are: $@"
thisarray=$1echo"The received array is ${thisarray[*]}"
}
myarray=(12345)
echo"Ther original array is:${myarray[*]}"
testit $myarray
#向脚本中传入数组的正确写法
function testit {
echo"number:$#"echo"argume:$@"
local newarray
newarray=(`echo"$@"`)
echo"The new array value is: ${newarray[*]}"
}
myarray=(12345)
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 ]
doneecho$sum
}
myarray=(12345)
echo"The original array is:${myarray[*]}"
arg1=$(echo${myarray[*]})
result=$(addarray ${myarray[*]})
echo"The result is $result"echo"------------------------------"
result=$(addarray $arg1)
echo"The result is $result"