文章目录
Shell中的函数
1 系统函数
1.1 basename 根据绝对路径或者相对路径获取文件名
[root@localhost jiaoben]# ll
总用量 48
-rwxr-xr-x. 1 root root 181 7月 1 22:54 case_demo.sh
-rw-r--r--. 1 root root 76 7月 1 23:02 for_demo1.sh
-rw-r--r--. 1 root root 45 7月 1 23:12 for_demo2.sh
-rwxr--r--. 1 root root 185 7月 1 23:25 for_demo3.sh
-rw-r--r--. 1 root root 27 6月 27 23:38 hello.sh
-rwxr-xr-x. 1 root root 62 7月 1 22:24 if_demo1.sh
-rwxr-xr-x. 1 root root 203 7月 1 22:38 if_demo2.sh
-rwxr-xr-x. 1 root root 52 6月 28 22:05 parameter.sh
-rw-r--r--. 1 root root 450 6月 29 00:03 para.sh
-rwxr--r--. 1 root root 88 7月 2 00:07 read_demo.sh
-rw-r--r--. 1 root root 323 6月 29 23:58 sum.sh
-rw-r--r--. 1 root root 84 7月 1 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