@[toc]
如果想看更详细的Shell总结请到我之前写的博客http://t.csdn.cn/cQArA
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