shell函数怎么用
创始人
2024-12-26 02:22:08
0次

函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell 也支持函数。Shell 函数必须先定义后使用。Shell 函数的定义格式如下:

[function] fun() {
    list of commands
    [ return value ]
}

说明:

  1. 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数,function关键字和()必须有其中一个。

  2. 返回值,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)。

  3. 参数,()内是没有参数的,它并不像C语言那样,在()里可以有参数。那大家可能就郁闷了,函数调用或多或少总是会需要一些参数,那么这些参数要怎么传递进来呢?其实参数传递方式为:fname;(不需要传递参数)或fname agr1 arg2(需要传递两个参数);

Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果 return 其他数据,比如一个字符串,往往会得到错误提示:“numeric argument required”。如果一定要让函数返回字符串,那么可以先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数返回值。shell函数返回值有三种方式:

  1. 直接return通过$?来接收返回值;

  2. 定义全局变量,通过全局变量来接收的方式,使用函数返回值。

  3. echo的方式,通过标准输出来返回。

#!/bin/bash

function sum()
{
    if [ $# != 2 ]
    then
        echo "arg num != 2"
        return 0
    fi
    return $(( $1 + $2 ))    
}
sum 5 6   #调用函数只需要给出函数名,不需要加括号。
echo "5+6=$?" #-->5+6=11; 函数返回值在调用该函数后通过 $? 来获得。
sum 100 200 
echo "100+200=$?"   #-->100+200=44,return后跟数值n(0-255)。300-256=44

#向函数传递数组
a=(1 2 3 4)
sum(){
    local sum=0;
    for v in $@
    do
        sum=$[sum+v]   #sum=$(($sum+$v));
    done
    echo $sum;  #-->10
}   
sum ${a[@]}
 
#像删除变量一样,删除函数也可以使用 unset 命令,不过要加上 .f 选项, 
#$unset -f function_name
#如果你希望直接从终端调用函数,可以将函数定义在主目录下的 .profile 文件,这样每次登录后,在命令提示符后面输入函数名字就可以立即调用。
  • $0:是脚本本身的名字;

  • $#:是传给脚本的参数个数;

  • $@:是传给脚本的所有参数的列表,即被扩展为"$1" "$2" "$3"等;

  • $*:是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个,即被扩展成"$1c$2c$3",其中c是IFS的第一个字符;

  • $$:是脚本运行的当前进程ID号;

  • $?:是显示最后命令的退出状态,0表示没有错误,其他表示有错误;

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...