一:系统函数

1.1 basename

(1)基本语法

  • basename [string / pathname] [suffix]

  • basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

  • basename 可以理解为取路径里的文件名称

  • 选项

    • suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。

(2)案例实操

1
2
3
4
[root@hadoop100 shell]# basename /root/RupertTears/shell/parameter.sh 
parameter.sh
[root@hadoop100 shell]# basename /root/RupertTears/shell/parameter.sh .sh
parameter

1.2 dirname

(1)基本语法

  • dirname 文件绝对路径
  • 从给定的包含绝对路径的文件名中去除文件名 (非目录的部分),然后返回剩下的路径(目录的部分)
  • dirname 可以理解为取文件路径的绝对路径名称

(2)案例实操

1
2
[root@hadoop100 shell]# dirname /root/RupertTears/shell/parameter.sh 
/root/RupertTears/shell

二:自定义函数

2.1 基本语法

其中 [ ] 表示的内容可以省略;

1
2
3
4
5
[ function ] funname[()]
{
Action;
[return int;]
}

2.2 经验汇总

  1. 必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。
  2. 函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255);
  3. 若想接收返回值的结果,可以 echo 结果,用 $( ) 接收到结果;

2.3 案例实操

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@hadoop100 shell]# cat fun.sh 
#!/bin/bash
function add(){
s=$[$1+$2]
echo $s
}

read -p "请输入第一个参数:" a
read -p "请输入第二个参数:" b

sum=$(add $a $b)
echo "两数之和为:"$sum

[root@hadoop100 shell]# ./fun.sh
请输入第一个参数:110
请输入第二个参数:300
两数之和为:410