Shell编程之函数
目录
一、函数分类
1、系统函数
# 系统自带函数,无需定义可直接使用
2、自定义函数
# 用户自定义函数
二、常用系统函数
basename函数
# basename函数: 用于获取文件名的,根据给出的文件路径截取文件名
# 语法:
basename [string / pathname] 文件后缀
[root@localhost home]# basename ./tset.sh
tset.sh
[root@localhost home]# basename ./tset.sh sh
tset.
[root@localhost home]# basename ./tset.sh .sh
tset
dirname函数
# dirname函数: 从指定文件绝对路径去除文件名,获取文件名前面的目录
# 语法:
dirname 文件绝对路径
[root@localhost home]# pwd
/home
[root@localhost home]# dirname /home/test.sh
/home
三、自定义函数
1、自定义函数语法
# 自定义函数语法:
funname()
{
操作命令
[return 返回值]
}
# 当不写返回值时,return 返回操作命令的结果
# 调用函数语法:
funname 传递参数1 传递参数2
2、自定义函数的分类
1、无参无返回值
[root@localhost home]# cat script
#!/bin/env bash
demo()
{
echo "hello world"
}
demo
[root@localhost home]# bash -n script
[root@localhost home]# bash -x script
+ demo
+ echo 'hello world'
hello world
2、无参有返回值
[root@localhost home]# cat script
#!/bin/env bash
add()
{
echo "启动中..."
read -p 'input numb1:' numb1
read -p 'input numb2:' numb2
# echo 'numb1=$numb1,numb2=$numb2'
return $(($numb1+$numb2))
}
add
echo $?
[root@localhost home]# bash -n script
[root@localhost home]# bash -x script
+ add
+ echo 启动中...
启动中...
+ read -p 'input numb1:' numb1
input numb1:2
+ read -p 'input numb2:' numb2
input numb2:2
+ return 4
+ echo 4
4
3、有参有返回值
# 常用特殊字符参数:
$# 获取当前脚本的总参数个数
$* 把所有参数打包成一个字符,等同于python的*args和**kwargs
$$ 当前运行的脚本进程ID号
$! 后台运行的最后一个进程ID号
$@
$? 上一条命令返回的结果
# 代码
[root@localhost home]# cat script
#!/bin/env bash
add()
{
echo "启动中..."
# read -p 'input numb1:' numb1
# read -p 'input numb2:' numb2
echo "param1=$1"
echo "parm2=${10}"
echo "parm3=${11}"
echo "parm numb is $#"
echo "parm is $*"
# return $(($numb1+$numb2))
}
add 1 2 3 4 5 6 7 8 9 10 11 13
[root@localhost home]# bash script
启动中...
param1=1
parm2=10
parm3=11
parm numb is 12
parm is 1 2 3 4 5 6 7 8 9 10 11 13
浙公网安备 33010602011771号