linux shell函数和返回值

这篇具有很好参考价值的文章主要介绍了linux shell函数和返回值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

shell函数可以有返回值,但是只能返回0-255作为状态值,不能返回字符串,字符串可以通过其他方式传递给调用者

1.shell函数的return

小于255的值

~/Desktop$ cat b.sh
getLastSize() {
size=2
return $size
}

getLastSize
lastSize=$?
echo "last size: $lastSize"

~/Desktop$ ./b.sh
last size: 2

大于255的值

~/Desktop$ cat b.sh
getLastSize() {
size=256
return $size
}

getLastSize
lastSize=$?
echo "last size: $lastSize"

~/Desktop$ ./b.sh
last size: 0

基本是对256取余的返回值

~/Desktop$ cat b.sh
getLastSize() {
size=513
return $size
}

getLastSize
lastSize=$?
echo "last size: $lastSize"

~/Desktop$ ./b.sh
last size: 1

2.返回字符串

通过$(函数调用和参数),通过$()调用,函数中的echo不会打印到控制台,直接调用函数,则会调用控制台

~/Desktop$ cat b.sh
getLastSize() {
size=513
echo $size
}

lastSize=$(getLastSize)
echo "last size: $lastSize"

~/Desktop$ ./b.sh
last size: 513

返回非纯数字的字符串

~/Desktop$ cat b.sh
getLastSize() {
size='aaa513'
echo $size
}

lastSize=$(getLastSize)
echo "last size: $lastSize"

~/Desktop$ ./b.sh
last size: aaa513

多行echo

~/Desktop$ cat b.sh
getLastSize() {
echo 'hello world'
size='aaa513'
echo $size
}

lastSize=$(getLastSize)
echo "last size: $lastSize"

~/Desktop$ ./b.sh
last size: hello world
aaa513

多行echo只获取最后一个输出

############################################
~/Desktop$ cat b.sh
getLastSize() {
echo 'hello world'
size='aaa513'
echo $size
}

lastSize=$(getLastSize | tail -1)
echo "last size: $lastSize"

~/Desktop$ ./b.sh
last size: aaa513

#############################################
~/Desktop$ cat b.sh
getLastSize() {
echo 'hello world'
size='aaa513'
echo $size
}

lastSize=`getLastSize | tail -1`
echo "last size: $lastSize"

~/Desktop$ ./b.sh
last size: aaa513

3.函数参数

~/Desktop$ cat b.sh
function printArg(){
   echo '$*='$*
   echo '$@='$@
   echo '$#='$#
   echo '$0='$0
   echo "\$1=$1"
   echo '$2='$2
   echo '$$='$$
   echo $2+$3
}

printArg 'a' 'b' 'c' 1 2 3

echo 'printArg done'

ret=$(printArg 1 3 'a' 'b' 5 | tail -1)
echo 'printArg done'
echo "ret=$ret"

~/Desktop$ ./b.sh
$*=a b c 1 2 3
$@=a b c 1 2 3
$#=6
$0=./b.sh
$1=a
$2=b
$$=663215
b+c
printArg done
printArg done
ret=3+a

参数说明

   $0;# 获取执行命令:./b.sh
   $*;# 获取所有参数列表
   $@;# 获取所有参数列表
   $#;# 获取参数列表个数
   $1;# 获取第一个参数
   $2;# 获取第二个参数
   $$;# 获取进程id

 4.流程控制

for循环

~/Desktop$ cat b.sh
function testfor(){
	for (( x=1; x<$1; x++)); do
		echo get number: $x
	done
}

testfor 5

~/Desktop$ ./b.sh
get number: 1
get number: 2
get number: 3
get number: 4

switch case;在sell中是case in

~/Desktop$ cat b.sh
function getDaysInYearMonth(){
    days=0;
    year=$1;month=$2;
    case $month in
         4 | 6 | 9 | 11)
           days=30;;
         2)
           if [ $((year%4)) -eq 0 -a $((year%100)) -ne 0 -o $((year%400)) -eq 0 ];then
                  days=29;
           else
                  days=28;
           fi;;
         *)
           days=31;;
    esac;
    return $days;
}

getDaysInYearMonth 2020 2
days=$?
echo 2020/02 has day:$days

getDaysInYearMonth 2022 3
days=$?
echo 2022/03 has day:$days

~/Desktop$ ./b.sh
2020/02 has day:29
2022/03 has day:31

规则

# case val in
#     match1)
#        dosomething
#        doother;;
#    match2 | match2)
#        dosomething;;
#    *) #match all
#        dosomething;;
# esac;
#
#

 注意:

函数return的是状态码,不是数值

函数可以通过echo让调用者调用$()获取文章来源地址https://www.toymoban.com/news/detail-684805.html

到了这里,关于linux shell函数和返回值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux 服务器运维】定时任务 crontab 详解 | 文末送书

    本文思维导图概述的主要内容: 1.1 什么是 crontab Crontab 是一个在 Unix 和 Linux 操作系统上 用于定时执行任务 的工具。它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。Crontab 是 cron table 的缩写, cron 指的是 Unix 系统中的一个后台进程,它

    2024年02月08日
    浏览(92)
  • Linux服务器常见运维性能测试(1)综合跑分unixbench、superbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月04日
    浏览(82)
  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(98)
  • 【Linux】在服务器上创建Crontab(定时任务),自动执行shell脚本

    业务场景:该文即为上次编写shell脚本的姊妹篇,在上文基础上,将可执行的脚本通过linux的定时任务自动执行,节省人力物力,话不多说,开始操作! 连上服务器后,在任意位置都可以执行: crontab -e 如果没有进入 编辑cron任务模式 根据提示查看我们的服务器上是否未安装crontab没有则

    2024年02月14日
    浏览(60)
  • [1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

    本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程,本期为大家按照本专栏的基本内容进行多方面的测评。

    2024年02月07日
    浏览(94)
  • Java利用JSCH库远程连接Linux服务器以及操作多条Shell命令

    为了实现 DHCP 服务器的 IP 存储、回收和查询机制,我们需要将服务器中 LXD 容器的网卡 IP 查询出来,并且存储到服务器中的 Mysql 中。所以,下面介绍如何通过 Java 远程连接 Linux 服务器以及操作多条 Shell 命令。 创建 Maven 项目,导入依赖 jsch 实现远程连接,往后我们只需要调

    2024年02月13日
    浏览(51)
  • Linux服务器常见运维性能测试(3)CPU测试super_pi、sysbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月02日
    浏览(55)
  • 华为云云耀云服务器L实例评测 | Linux系统宝塔运维部署H5游戏

    本章节内容,我们主要介绍华为云耀服务器L实例,从云服务的优势讲起,然后讲解华为云耀服务器L实例资源面板如何操作,如何使用宝塔运维服务,如何使用运维工具可视化安装nginx,最后部署一个自研的H5的小游戏(6岁的小朋友玩的很开心😁)。 前端的同学如果想把自己

    2024年02月07日
    浏览(58)
  • 【linux】 Shell函数返回值

    return 返回 shell中通过return返回是有限制的, 必须是数字 ,最大返回255,超过255,则从0开始计算。 通常仅返回0或1;0表示成功,1表示失败 。 通过echo 直接返回。 在没有return 语句,函数将以最后一条命令运行结果,作为返回值。因此,通常在 最后一行以echo “xxx”语句 作为

    2024年02月04日
    浏览(29)
  • linux shell函数和返回值

    shell函数可以有返回值,但是只能返回0-255作为状态值,不能返回字符串,字符串可以通过其他方式传递给调用者 小于255的值 大于255的值 基本是对256取余的返回值 通过$(函数调用和参数),通过$()调用,函数中的echo不会打印到控制台,直接调用函数,则会调用控制台 返回非纯

    2024年02月10日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包