您的位置:首页 > 运维架构 > Shell

shell编程高级之函数

2015-12-04 21:07 621 查看

shell编程高级之函数

创建函数

#第一种方式

function name {

commands

}


#第二种方式

name(){

commands

}


#使用函数

#!/bin/bash

#function

# 此处fun1和{中间要有空格

function fun1 {

echo "i am fun1"

}

fun1

fun2(){

echo "i am fun2"

}

fun2


函数返回值

#默认退出状态码 $?

#return命令

#函数已结束就取返回值

#退出状态码必须在0-255之间

function fun1 {

commands

return 250

}

fun1

echo $?


#使用函数输出

function fun1 {

commands

echo "holy shit"

}

val=`fun1`

echo $val


在函数中使用变量

# 向函数中传递参数

# 需在同一行

#在函数中处理变量

#在函数外定义的都是全局变量

#在函数内部使用局部变量加local关键字

# $0 函数名 $1 $2 $… 参数值 $# 计数

fun5(){

if [ $# -eq 0 ] || [ $# -gt 2 ]

then

echo -1

elif [ $# -eq 1 ]

then

echo $[$1 * $1]

else

echo $[$1 * $2]

fi

}

fun5 10

fun5 10 11

fun5 10 11 12


数组变量和函数

#传递给函数数组变量

#在传递给函数前分解成单个值,传递后在函数内部组合成数组

function testit {

local newarray

newarray=(`echo "$@"`)

echo "The new array value is : ${newarray[*]}"

}

myarray=(1 2 3 4 5)

echo "The original array value is : ${myarray[*]}"

testit ${myarray[*]}


#让函数返回数组变量

rtarray(){

local originalArr

local newArr

local elements

local i

originalArr=(`echo "$@"`)

newArr=(`echo "$@"`)

elements=$[ $#-1 ]

for(( i = 0;i <= $elements;i++ ))

{

newArr[$i]=$[${originalArr[$i]}*2]

}

echo ${newArr[*]}

}

myarr=(1 2 3 4 5)

echo "The original array value is :${myarr[*]}"

val1=`rtarray ${myarr[*]} `

echo "The new array value is : ${val1[*]}"


函数递归

#计算阶乘

factorial(){

if [ $1 -eq 1 ]

then

echo 1

else

local tmp=$[$1-1]

local result=`factorial $tmp`

echo $[ $result * $1 ]

fi

}

read -p "Enter The Value:" value

result=`factorial $value`

echo "The factorial of the $value is $result"


创建库

#引入
.   ./ku.sh
.号为source的快捷别名.称作点操作符

.   ./ku.sh

result=`addem 10 15`

echo "The result is $result"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: