shell-05-函数

举报
kaliarch 发表于 2021/12/08 12:31:25 2021/12/08
【摘要】 一、概念linux shell 可以用户定义函数,然后在shell脚本中可以随便调用,以此来重复调用公共函数,减少代码量。 二、格式[ function ] funname(){ action; [return int;]}说明:function 关键字可写,也可不写。参数返回,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值...

一、概念

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用,以此来重复调用公共函数,减少代码量。

二、格式

[ function ] funname()
{
    action;
    [return int;]
}

说明:

  • function 关键字可写,也可不写。
  • 参数返回,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255),hell 函数返回值只能是整形数值,一般是用来表示函数执行成功与否的,0表示成功,其他值表示失败。因而用函数返回值来返回函数执行结果是不合适的。如果要硬生生地return某个计算结果,比如一个字符串,往往会得到错误提示:“numeric
    argument required”。
    如果一定要让函数返回一个或多个值,可以定义全局变量,函数将计算结果赋给全局变量,然后脚本中其他地方通过访问全局变量,就可以获得那个函数“返回”的一个或多个执行结果了。
#!/bin/bash
function output_data() {
	DATA=$((1+1))
	return $DATA
}
output_data
echo $?
#!/bin/bash
# function:add number
function add_num() {
	echo "请输入第一个数:"
	read number01
	echo "请输入第二个数字"
	read number02
	if [[ "$number01" =~ ^[0-9]+$ ]] && [[ "$number02" =~ ^[0-9]+$ ]];then
		sum=$(($number01+$number02))
		echo "$number01 + $number02 = $sum"
	else
		echo "input must be number"
	fi
}
add_num

三、函数参数

将函数写成无状态的,将数据当做参数进行传入

#!/bin/bash
funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
    echo "作为一个字符串输出所有参数 $@ !"

}
funWithParam `seq 1 20`

${1..n} 指定第n个输入的变量名称
$0	    脚本自身名字
	
$?	    返回上一条命令是否执行成功,0 为执行成功,非 0 则为执行失败
	    
$#	    位置参数总数
	
$*	    所有的位置参数被看做一个字符串
	
$@	    每个位置参数被看做独立的字符串
	
$$	    当前进程 PID
	
$!	    上一条运行后台进程的 PID

eg:函数炸弹

:(){ :|:& };:

:|: 表示每次调用函数":"的时候就会生成两份拷贝。

& 放到后台

递归调用自身,直至系统崩溃

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。