Shell中的函数

文章介绍了Shell中的系统函数,包括basename用于获取文件名,dirname用于获取文件路径,以及date命令的不同格式化输出。接着,文章讲解了如何创建自定义函数,包括无返回值、带返回值的函数示例,并展示了如何将函数返回值赋给变量进行后续操作。
摘要由CSDN通过智能技术生成

Shell中的函数

1 系统函数

1.1 basename 根据绝对路径或者相对路径获取文件名

[root@localhost jiaoben]# ll
总用量 48
-rwxr-xr-x. 1 root root 181 71 22:54 case_demo.sh
-rw-r--r--. 1 root root  76 71 23:02 for_demo1.sh
-rw-r--r--. 1 root root  45 71 23:12 for_demo2.sh
-rwxr--r--. 1 root root 185 71 23:25 for_demo3.sh
-rw-r--r--. 1 root root  27 627 23:38 hello.sh
-rwxr-xr-x. 1 root root  62 71 22:24 if_demo1.sh
-rwxr-xr-x. 1 root root 203 71 22:38 if_demo2.sh
-rwxr-xr-x. 1 root root  52 628 22:05 parameter.sh
-rw-r--r--. 1 root root 450 629 00:03 para.sh
-rwxr--r--. 1 root root  88 72 00:07 read_demo.sh
-rw-r--r--. 1 root root 323 629 23:58 sum.sh
-rw-r--r--. 1 root root  84 71 23:33 while_demo.sh
[root@localhost jiaoben]# basename /home/jiaoben/case_demo.sh
case_demo.sh
[root@localhost jiaoben]# basename /home/jiaoben/case_demo.sh .sh
case_demo
[root@localhost jiaoben]# cd ..
[root@localhost home]# basename jiaoben/hello.sh
hello.sh
[root@localhost home]# basename jiaoben/hello.sh .sh
hello

1.2 dirname 获取文件所在路径

[root@localhost home]# dirname /home/jiaoben/case_demo.sh
/home/jiaoben
[root@localhost home]# dirname jiaoben/hello.sh
jiaoben

1.3 date 日期函数

[root@localhost home]# date
2023年 07月 02日 星期日 00:21:13 CST
[root@localhost home]# date +%F
2023-07-02
[root@localhost home]# date +%s
1688228484

2 自定义函数

语法:

[ function ] funname[()]

{

​ Action;

​ [return int;]

}

funname

1)必须在调用函数的地方之前,先声明函数,shell脚本是逐行运行。

2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果作为返回值。return后跟数值n(0-255)

2.1 求两数和的函数Demo

sum_fun.sh

#!/bin/bash
function add(){
        s=$[$1 + $2]
        echo "和等于:"$s
}
read -p "请输入第一个整数:" num1
read -p "请输入第二个整数:" num2
add $num1 $num2

执行脚本:

[root@localhost jiaoben]# sh sum_fun.sh
请输入第一个整数:8
请输入第二个整数:6
和等于:14

2.2 求两数和带return返回的Demo

函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果作为返回值。return后跟数值n(0-255)

sum_fun.sh

#!/bin/bash
function add(){
        s=$[$1 + $2]
        return $s
}
read -p "请输入第一个整数:" num1
read -p "请输入第二个整数:" num2
add $num1 $num2
echo "和等于:"$?

执行脚本:

[root@localhost jiaoben]# sh sum_fun.sh
请输入第一个整数:120
请输入第二个整数:110
和等于:230
[root@localhost jiaoben]# sh sum_fun.sh
请输入第一个整数:150
请输入第二个整数:200
和等于:94

**注意:**从以上结果可以看出来,当大于255时,输出的计算结果不准确

2.3 求两数和并把结果给变量 ,对变量进行操作Demo

sum_fun.sh

#!/bin/bash
function add(){
        s=$[$1 + $2]
        echo $s
}
read -p "请输入第一个整数:" num1
read -p "请输入第二个整数:" num2
sum=$(add $num1 $num2)
echo "和等于:"$sum
echo "和的平方:"$[$sum * $sum]

执行脚本:

[root@localhost jiaoben]# vim sum_fun.sh
[root@localhost jiaoben]# sh sum_fun.sh
请输入第一个整数:100
请输入第二个整数:200
和等于:300
和的平方:90000
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值