一、系统函数
1.basename基本语法
basename [string / pathname][suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。
2、案例
(1)截取该/home/laoxiao/14for循环语句-4.sh路径的文件名称
[root@mylinux2 shell]# basename /home/shell/14for循环语句-4.sh
14for循环语句-4.sh
选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
[root@mylinux2 shell]# basename /home/shell/14for循环语句-4.sh .sh
14for循环语句-4
[root@mylinux2 shell]# basename /home/shell/14for循环语句-4.sh 语句-4.sh
14for循环
3、dirname基本语法
dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
[root@mylinux2 shell]# dirname /home/shell/14for循环语句-4.sh
/home/shell
[root@mylinux2 shell]# dirname /home/zhilong/msb/abc/mulu/66.txt
/home/zhilong/msb/abc/mulu
4、综合运用
将/opt/test/目录下的所有文件改为以.txt结尾
dir="/opt/test/"
for f in `opt/test/*.txt`;do
#f就是opt/test目录下的文件
filename=`basename $f.txt .txt`
dist_name=filename".sh"
mv $f $dir$dist_name
done
二、 自定义函数
1.基本语法
[ function ] funname[()]
{
Action;
[return int;]
}
funname
注意:
(1)必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。
(2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)
(3)可以采用标准输出:echo来作为函数的返回值
2、通过自定义函数计算输入的2个参数的和
1 #!/bin/bash
2
3 #自定义的一个函数
4 function sum(){
5
6 s=$[$1+$2]
7 return $s
8
9 }
10
11 sum 100 200
12
13 echo $?
执行结果为:44
[root@mylinux2 shell]# bash 17自定义函数1.sh
44
分析:执行结果为什么是44呢?明显不对,什么原因呢?
因为return后跟数值n(0-255)
1 #!/bin/bash
2
3 #自定义的一个函数
4 function sum(){
5
6 s=$[$1+$2]
7 return $s
8
9 }
10
11 sum 10 200
12
13 echo $?
执行结果为:210
[root@mylinux2 shell]# bash 17自定义函数1.sh
210
3、解决当2个数的和大于255的方法
可以采用标准输出:echo来作为函数的返回值
1 #!/bin/bash
2
3 #自定义的一个函数
4 function sum(){
5
6 let s=$1+$2
7
8 echo $s
9 }
10
11 result=`sum 100 200`
12
13 echo $result
[root@mylinux2 shell]# bash 18自定义函数.sh
300
三、计算1到n的阶乘
1 #!/bin/bash
2
3 if [ $# -ne 1 ];then
4 echo "参数错误,程序错误"
5 exit 3
6 fi
7
8 #任何一个大于1的数字,它的阶乘=n*(n-1)的阶乘
9
10 function jiecheng(){
11 n=$1
12 if [ $n -le 1 ];then
13 echo 1 #当成n=1的时候函数的返回值
14 return 0 #返回的是执行状态
15 elif [ $n -gt 1 ];then
16 let pre_n=n-1
17 temp=`jiecheng $pre_n` ##计算n-1的阶乘
18 let result=n*temp
19 echo $result
20 return 0
21 fi
22
23 }
24
25 jiecheng $1
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123516.html