xie-wen-hui
船帆虽小,却也能远航!

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
posted on 2021-01-17 14:23  xie-wen-hui  阅读(121)  评论(0)    收藏  举报