函数
脚本执行结果单一,函数担任轻量级的脚本角色,具有返回值更加灵活
1. basename(系统内置函数)
基本语法basename [string / pathname] [suffix]
(功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。
basename可以理解为取路径里的文件名称
选项:
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
sh
[root@hadoop100 shell_learn]# basename /root/jack/ai.mp4
ai.mp4
2. dirname(系统内置函数)
基本语法dirname 文件绝对路径
(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
sh
[root@hadoop100 shell_learn]# dirname /root/jack/ai.mp4
/root/jack
3. mktemp
Bash脚本有时需要创建临时文件或临时目录。常见的做法是,在/tmp目录里面创建文件或目录,这样做有很多弊端,比如有安全问题(首先,/tmp目录是所有人可读写的,任何用户都可以往该目录里面写文件。容易被攻击者篡改导致系统运行异常,还有就是临时文件使用完毕,应该删除。但是,脚本意外退出时,往往会忽略清理临时文件。)。直接运行mktemp命令,就能生成一个临时文件。
sh
mktemp
/tmp/tmp.4GcsWSG4vj
mktemp命令生成的临时文件名是随机的,而且权限是只有用户本人可读写。
参数:
-d
参数可以创建一个临时目录-p
参数可以指定临时文件所在的目录。-t
参数可以指定临时文件的文件名模板。
4. trap
trap命令用来在Bash脚本中响应系统信号。trap的命令格式如下:trap [动作] [信号1] [信号2]
sh
# trap命令响应EXIT信号删除临时文件
trap 'rm -f "$TMPFILE"' EXIT
如果trap需要触发多条命令,可以封装一个Bash函数:
sh
function egress {
command1
command2
command3
}
trap egress EXIT
3. 自定义函数
基本语法
[ function ] funname[()]
{
Action;
[return int;]
}
提示
(1)必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。
(2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)
sh
[root@hadoop100 shell_learn]# cat add.sh
#!/bin/bash
function add()
{
s=$[$1+$2]
echo $s
}
read -p "请输入第一个整数:" a
read -p "请输入第二个整数:" b
sum=$(add $a $b)
echo "和为:$sum"
[root@hadoop100 shell_learn]# ./add.sh
请输入第一个整数:123
请输入第二个整数:234
和为:357