Shell函数、系统函数、basename [string / pathname] [suffix] 可以理解为取路径里的文件名称 、dirname 文件绝对路

1,136 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

@[toc] 如果想看更详细的Shell总结请到我之前写的博客blog.csdn.net/Redamancy06…

1.函数

1.1系统函数

1.1.1basename

1.1.1.1基本语法

basename [string / pathname] [suffix] (功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。 basename 可以理解为取路径里的文件名称 选项: suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。

1.1.2dirname

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

1.1.3案例

1.1.3.1date+%s时间戳练习

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.1.3.2basename的练习

在这里插入图片描述

将文件名剪切下来 在这里插入图片描述 parameter文件的代码 在这里插入图片描述

显示的文件名包括路径,我们不需要输出路径,因此加上basename来解决

在这里插入图片描述

在这里插入图片描述

1.1.3.3dirname的练习

dirname截取最后一个斜杠之前的路径,不包括文件名 而basename截取最后一个斜杠之后的文件名,不包括路径

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

如果只有pwd的话,在其他文件夹里执行代码则不会打印脚本的目录,需要加上dirname,如下 在这里插入图片描述

在这里插入图片描述

加上dirname后输出的脚本路径是保持不变的

1.2自定义函数

1.2.1基本语法

[ function ] funname[()] 
{ 
	Action; 
	[return int;] 
}

1.2.2经验技巧

(1)必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一样先编译。 (2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255)

1.2.3案例

1.2.3.1没有使用return的版本

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述 可以输出和

1.2.3.2用return返回的话

在这里插入图片描述 在这里插入图片描述 可以看出,return后面必须是跟数字,修改如下: 在这里插入图片描述 在这里插入图片描述

这样就可以正常输出结果了,但是return的时候只能返回0-255,超过的数就不能显示正确的答案,如下 在这里插入图片描述 156+245!=145的,所以可以说明return只能返回0-255的数,那我们应该如何解决呢,看下面的代码 在这里插入图片描述 这样写就可以将函数add里面echo的值赋给ans,然后再输出 在这里插入图片描述

结果也是对的,说明这样写是正确的

如果想看更详细的Shell总结请到我之前写的博客t.csdn.cn/cQArA