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

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

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

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总结请到我之前写的博客http://t.csdn.cn/cQArA

相关文章
|
Shell
Shell 文件包含
10月更文挑战第5天
297 4
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
635 6
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
SQL 索引
在 SQL Server 中使用 STRING_AGG 函数
【8月更文挑战第5天】
5151 2
在 SQL Server 中使用 STRING_AGG 函数
|
存储 Serverless 数据处理
Python - len(string)函数
通过上述介绍和示例,我们可以清楚地看到,在Python中,`len()`函数是处理字符串以及其他可迭代对象长度的重要工具。它简单、易用,但在实际应用中却非常强大,无论是在基础编程还是在复杂的数据处理中,`len()`函数都扮演着不可或缺的角色。
893 10
|
Shell Linux 网络安全
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
527 3
|
C++
C++ string中的函数和常用用法
C++ 中string中的函数和常用用法
467 4
|
存储 C++
【C++】string类的使用③(非成员函数重载Non-member function overloads)
这篇文章探讨了C++中`std::string`的`replace`和`swap`函数以及非成员函数重载。`replace`提供了多种方式替换字符串中的部分内容,包括使用字符串、子串、字符、字符数组和填充字符。`swap`函数用于交换两个`string`对象的内容,成员函数版本效率更高。非成员函数重载包括`operator+`实现字符串连接,关系运算符(如`==`, `<`等)用于比较字符串,以及`swap`非成员函数。此外,还介绍了`getline`函数,用于按指定分隔符从输入流中读取字符串。文章强调了非成员函数在特定情况下的作用,并给出了多个示例代码。
|
存储 NoSQL 索引
MPP架构数据仓库使用问题之在ORC文件中,String类型字段是怎么进行编码的
MPP架构数据仓库使用问题之在ORC文件中,String类型字段是怎么进行编码的