函数
命令替换$()
之前学过一些系统函数比如说date
date
2025年 02月 17日 星期一 20:58:22 CST
date +%s
1739797107
vim function_test.sh
chmod +x function_test.sh
用在shell脚本里

将函数结过通过$()传递,然后通过字符串拼接
./function_test.sh yu
yu_log_1739797054
系统函数
basename
- 基本语法
basename [string / pathname] [suffix](功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。basename 可以理解为取路径里的文件名称。
选项:
suffix为后缀,如果suffix 被指定了,basename 会将pathname 或string 中的suffix 去掉。
之前写过的parameter.sh 里面通过$0来获取文件名,但是获取的文件名带路径和后缀。


用basename获取文件名:
basename ./parameter.sh .sh
parameter
当然在脚本中也可以实现:

./parameter.sh a b c

dirname
dirname 文件路径(功能描述:从给定的包含路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
一般来说是想要获取绝对路径,dirname获得的可能是相对路径,可以通过cd 到获取的路径,再通过pwd获得绝对路径。

①:获取文件的路径;并且切换到该路径
②:通过pwd函数显示当前路径的绝对路径
./parameter.sh a b c

自定义函数
基本语法
[ function ] funname[()]
{
Action;
[return int;]
}
(1)必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一样先编译。
(2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值n(0-255)。
创建fun.sh
vim fun.sh

chmod +x fun.sh
./fun.sh
请输入第一个参数:100
请输入第二个参数:200
和:300
再修改一下:

这样通过
?
来获取函数返回值有个问题,
?来获取函数返回值有个问题,
?来获取函数返回值有个问题,?只能获取[0~255]之间的值。 return 也只能返回 【0-255】
./fun.sh
请输入第一个参数:20
请输入第二个参数:30
50
./fun.sh
请输入第一个参数:100
请输入第二个参数:200
44

./fun.sh
请输入第一个参数:100
请输入第二个参数:200
300
Shell 中变量赋值必须严格遵循 变量名=值 格式,等号两侧不能有空格。

1366

被折叠的 条评论
为什么被折叠?



