Shell脚本函数的定义和传参
2023-12-26 15:18:51
linux shell
可以用户定义函数,然后在shell
脚本中可以随便调用。项目开发中利用Shell
脚本可以很方便进行工程化,自动化操作。
shell中函数的定义格式
# 格式1
[ function ] funname [()]
{
action;
#echo "输出";
[return int;]
}
# 格式2
fn(){
action;
#echo "输出";
[return int;]
}
说明:
- 1、可以带
function fun()
定义,也可以直接fun()
定义,不带任何参数。 - 2、参数返回,可以显示加:
return
返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)。
实例
#!/bin/bash
log(){
echo "Hello Shell";
}
echo "====函数开始===="
log
echo "====函数结束===="
输出结果:
====函数开始====
Hello Shell
====函数结束====
带有return
语句的函数:
#!/bin/bash
add(){
a=10
b=20
sum=`expr $a + $b`
#echo $sum
return $sum
}
echo "====函数开始===="
add
echo "a+b=$?"
echo "====函数结束===="
输出结果:
====函数开始====
a+b=30
====函数结束====
函数参数
- 在Shell中,调用函数时可以向其传递参数。在函数体内部,通过
$n
的形式来获取参数的值,例如,$1
表示第一个
参数,$2
表示第二个
参数…以此类推
#!/bin/bash
argsFn(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
echo "====函数开始===="
argsFn 1 2 3 4 5 6 7 8 9 100 999
echo "====函数结束===="
输出结果:
====函数开始====
第一个参数为 1 !
第二个参数为 2 !
第十个参数为 10 !
第十个参数为 100 !
第十一个参数为 999 !
参数总数有 11 个!
作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 100 999 !
====函数结束====
注意: $10
不能获取第十个
参数,获取第十个参数需要${10}
。当n>=10
时,需要使用${n}
来获取参数。
参数传入命令行脚本
#!/bin/bash
fnRun(){
echo `$1`
if [ $? == 0 ];then
echo "$ $1 执行成功"
fi
}
echo "====函数开始===="
fnRun "node -v"
fnRun "npm -v"
echo "====函数结束===="
输出结果:
====函数开始====
v12.5.0
$ node -v 执行成功
7.17.0
$ npm -v 执行成功
====函数结束====
常用封装
#!/bin/bash
fnRun(){
echo ""
echo "┍-------------------- $ $1 --------------------┑"
echo `$1`
if [ $? == 0 ];then
echo "$ $1 执行成功"
else
echo "$ $1 执行失败"
exit
fi
echo "┕-------------------- $ $1 --------------------┙"
}
fnRun "git add -A"
- 输出:
┍-------------------- $ git add -A --------------------┑
$ git add -A 执行成功
┕-------------------- $ git add -A --------------------┙
特殊字符用来处理参数:
参数 | 说明 |
---|---|
$# | 传递到脚本或函数的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
欢迎访问:个人博客地址
文章来源:https://blog.csdn.net/tiven_/article/details/135219440
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!