Shell脚本—函数应用

Posted 正在迷途

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本—函数应用相关的知识,希望对你有一定的参考价值。

一、概述

函数其实就是一堆命令的合集,用来完成特定功能的代码块,你可以对它进行自定义命令,并且可以在脚本中任意位置使用这个函数,要使用定义的函数,只需要填写函数名称就可以了。

二、Shell函数定义

1.方法1

#!/bin/bash
#定义函数
function first
echo "holle world"

########主体#######
#调用函数
first

Shell脚本—函数应用_Shell函数定义

Shell脚本—函数应用_数据库_02

2.方法2

#!/bin/bash
#定义函数
second()
echo "bye world"

########主体#######
#调用函数
second

Shell脚本—函数应用_调用函数_03

Shell脚本—函数应用_Shell函数定义_04

三、函数返回值

return表示退出函数并返回一个退出值,脚本中可以使用$?变量表示该值。

使用原则:

  1. 函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码。
  2. 退出状态码要在0~255之间,超出时值将处以256取余。

1.示例一

#!/bin/bash
function a
read -p "输入数值:" b
return $[$b * 2]

#######主体#######
a
echo $?

Shell脚本—函数应用_调用函数_05

Shell脚本—函数应用_调用函数_06

Shell脚本—函数应用_Shell函数定义_07

2.示例二

#!/bin/bash
a()
read -p "请输入:" b
b=$[ $b*2 ]
echo $b

########主体######
result=`a`
echo $result

Shell脚本—函数应用_传参_08

Shell脚本—函数应用_数据库_09

四、函数传参

传参就是传递参数。

1.示例1

#!/bin/bash
sum()
a=$[$1 + $2]
echo $a

read -p "输入数值:" first
read -p "输入数值:" second
sum $first $second

Shell脚本—函数应用_传参_10

Shell脚本—函数应用_Shell函数定义_11

2.示例2

sum1() 
sum=$[$1 + $2]
echo $sum

result=$(sum1 $1 $2)
echo $result

Shell脚本—函数应用_传参_12

Shell脚本—函数应用_数据库_13

推荐使用第二种,比较快速高效。

五、函数变量的作用范围

  1. 函数在Shell脚本中仅在当前Shell环境中有效。
  2. Shell脚本中变量默认全局有效。
  3. 将变量限定在函数内部使用local命令。

示例

#!/bin/bash
myfun()
echo $i
local i
i=9
echo $i

i=1
myfun
echo $i

Shell脚本—函数应用_子目录_14

Shell脚本—函数应用_Shell函数定义_15

六、递归

函数调用自己本身的函数

1.阶乘

#!/bin/bash
fact()
if [ $1 -eq 1 ]
then
echo 1
else
local temp=$[$1 - 1]
local result=$(fact $temp)
echo $[$1 * $result]
fi

read -p "输入要阶乘的数值:" n
result=$(fact $n)
echo "$n 的阶乘结果:$result"

Shell脚本—函数应用_数据库_16

Shell脚本—函数应用_Shell函数定义_17

2.递归目录

#!/bin/bash
file()
#遍历指定目录或子目录的所有文件
for f in $(ls $1)
do
if [ -d "$1/$f" ]
then
#如果是目录则输出目录
echo "目录:$2$f"
#递归调用函数判断子目录里的文件或者目录,并且输出时进行缩进
file "$1/$f" " $2"
else
#如果是子目录里的文件输出时进行缩进
echo "文件:$2$f"
fi
done

#递归查看指定目录
#第一个位置变量用于判断是目录或是文件,第二个位置变量用于给子目录或者子文件实现位移作用
file "/jiaobenHanShu" ""

Shell脚本—函数应用_数据库_18

七、创建数据库

先建一个函数库的脚本

#!/bin/bash
jia()
echo $[$1 + $2]

jian()
echo $[$1 - $2]

cheng()
echo $[$1 * $2]

chu()
if [ $2 -ne 0 ]
then
echo $[$1 / $2]
else
echo "被除数不能为0"
fi

Shell脚本—函数应用_调用函数_19

在另一个脚本使用数据库脚本文件,直接调用函数

#shell 脚本 片段

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

shell脚本----函数的应用!

常用python日期日志获取内容循环的代码片段

Python如何调用别人写好的脚本

shell脚本经典题之函数应用