basename [string/pathname] [suffix]
说明: basename 命令会删掉所有的前缀包括最后一个(/
)字符, 然后将字符串显示出来
选项: suffix 为后缀, 如果 suffix 被指定了, basename 会将 pathname 或 string 中的 suffix 去掉.
截取该 /root/shell/for1.sh 路径下的文件名
[root@hadoop1 shell]# basename /root/shell/case.sh case.sh
case.sh
[root@hadoop1 shell]# basename /root/shell/case.sh sh
case.
dirname 文件绝对路径
说明: 从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录的部分)
获取 for1.sh 文件的路径
[root@hadoop1 shell]# dirname /root/shell/for1.sh
/root/shell
[ function ] functionname[()]
{
action;
[return int;]
}
functionname
- 必须在调用函数地方之前, 先声明函数,shell 脚本是逐行运行的. 不会像其他语言一样先编译;
- 函数返回值, 只能通过
$?
系统变量获取, 可以显示加:return
返回, 如果不加, 将以最后一条命令运行结果, 作为返回值. return 后跟随数组 n(0-255)
计算两个输入参数的和
[root@hadoop1 shell]# vim myfun.sh
#!/bin/bash
function sum()
{
sum=0
sum=$[ $1 + $2 ]
echo $sum
}
read -p "请输入参数1(数值型):" n1;
read -p "请输入参数2(数值型):" n2;
sum $n1 $n2;
[root@hadoop1 shell]# sh myfun.sh
请输入参数1(数值型):2
请输入参数2(数值型):3
5