(7.1)Linux Shell脚本的自动化编程之Functiong函数的定义及调用,返回return

1.函数

  • 传参:$1,$2
  • 变量:local
  • 返回值:return $?
  • 作用:
    (1)完成特定功能的代码片段(块)
    (2)在shell中定义函数可使得代码模块化,便于复用代码
    (3)函数必须先定义才可以使用

2.定义函数

  • 方法1:
函数名()
{
	函数要实现的功能代码
}
  • 方法2:
function 函数名
{
	函数要实现的功能代码
}
  • 写一个阶乘的函数
#!/bin/bash
#!/bin/sh
#!/usr/bin/bash
#!/usr/sh
#/bin/env bash 调用env获取bash
#/usr/bin/env bash

##echo $[1+2]和echo $[ 1+2 ]的结果是一样的
##$[]就是运算,let命令也是运算
factorial()
{
	factorial=1
	for((i=1;i<=10;i++))
	do
		factorial=$[$factorial * $i]
	done
	echo "10的阶乘:$factorial"
}
factorial

-------------------------------------------------------------------------

factorial()
{
	factorial=1
	for((i=1;i<=$num;i++))
	do
		factorial=$[$factorial * $i]
	done
	echo "10的阶乘:$factorial"
}
num=5  ##调用函数之前,定义了一个num变量
factorial

-------------------------------------------------------------------------


factorial()
{
	factorial=1
	for((i=1;i<=$1;i++))
	do
		factorial=$[$factorial * $i]
	done
	echo "10的阶乘:$factorial"
}
factorial 10//这个10会直接传递给函数factorial()的$1,直接执行./factorial.sh

##如果想要执行脚本的参数和函数的参数互动的话,改为:
factorial()
{
	factorial=1
	for((i=1;i<=$1;i++))
	do
		factorial=$[$factorial * $i]
	done
	echo "10的阶乘:$factorial"
}
factorial $1##这个$1会直接传递给函数factorial()的$1,直接执行./factorial.sh 10

-------------------------------------------------------------------------

factorial()
{
	factorial=1
	for((i=1;i<=$1;i++))
	do
		factorial=$[$factorial * $i]
	done
	echo "10的阶乘:$factorial"
}
factorial $1##这个$1会直接传递给函数factorial()的$1,直接执行./factorial.sh 5 8 10
factorial $2
factorial $3
##作为函数来讲,$1,$2,$3都是函数的第一个参数

-------------------------------------------------------------------------

使用let和shell的for循环
factorial()
{
	factorial=1
	for i in 'seq $1'
	do
		let factorial=$factorial*$i
		##或者let factorial*=$i 
	done
	echo "10的阶乘:$factorial"
}
factorial $1

3.函数的返回值

  • 函数的返回值:函数最后一条命令的执行结果,要么0,要么非0,但是可利用return自定义返回结果,但是不能超过255
  • 程序的返回值:程序最后一条命令的执行结果
  • return只能返回0-255的数
#!/bin/bash
fun2()
{
	read -p "enter num:" num
	let 2*$num
}
fun2
echo "fun2 return value: $?"
##上一个命令的返回值,这里是函数fun2()的返回值,是函数最后一条命令的返回的状态码:这里的
##最后一条命令是:let 2*$num
}
-------------------------------------------------------------------------

fun2()
{
	read -p "enter num:" num
	return $(2*$num)
}
fun2
echo "fun2 return value: $?"  ##shell的返回码最高是255,如果超过255就会报错

## ./return.sh
##enter num: 100
##100

## ./return.sh
##enter num: 200
##255

-------------------------------------------------------------------------

fun2()
{
	read -p "enter num:" num
	echo $(2*$num)
}
result='fun2'     ## 使用函数的输出
echo "fun2 return value: $?"  ##shell的返回码最高是255,如果超过255就会报错

## ./return.sh
##enter num: 100
##100
发布了510 篇原创文章 · 获赞 134 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/103812309
今日推荐