Bash 函数详解

默认情况下,脚本中定义的任何变量均为 全局变量,可以在函数内访问。

创建函数

# function关键字创建函数

function func1 {
   echo "this is func1"
}

# 接近其它语言形式的函数

func2() {
   echo "this is func2"
}

# sh 函数命名使用下划线分隔

fun_read(){
  echo "sh function"
}

注意,为了兼容 sh,尽量使第二种方法。

引用函数

func1
func2

返回值

return 只能用来返回整数值(0-255 之间)。

变量作用范围

默认情况下,脚本中定义的任何变量均为 全局变量,可以在函数内访问。可以使用 local 关键字来定义局部变量。

位置参数变量

  • "$*"

被双引号扩住,所有参数被认为是一个字段

for in 循环只会循环一次

  • "$@"

被双引号扩住,参数会以空格划分开

  • $#

传入的参数个数。可以为 0

  • $$

脚本的当前进程 ID 号。

  • shift n

n 默认为 1 ,该命令用于偏移位置参数变量,原来的 $2 变为 $1,以此类推。

m=${1:-start}

如果 $1 存在且不为空,m 就是 $1

如果 $1 不存在或为空,那么 m 就是 start

参考链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WD学习记录

html5学习笔记(二)

1. min、max、step属性用于包含数字或日期的input类型规定限定(约束)。

701
来自专栏破晓之歌

Typescript入门 原

915
来自专栏我的博客

NodeJs当中module.exports和exports的区别

Module.exports才是真正的接口,exports只不过是它的一个辅助工具。 最终返回给调用的是Module.exports而不是exports。 所有...

3566
来自专栏Python爬虫与数据挖掘

Python正则表达式初识(七)

继续分享Python正则表达式的基础知识,今天给大家分享的特殊字符是“\s”、“\S”,具体的教程如下。

834
来自专栏架构之路

Spring AOP中 args和arg-names的区别

这两天在看aop aspectj的各种语法,发现里面有两个概念 args和arg-names很容易混淆,网上也基本没说清楚,所以就动手试了一下,发现还是自己试试...

3736
来自专栏高性能分布式系统设计

Go的defer和方法修饰符的一个小坑

先看代码: ? ? https://play.golang.org/p/GlM23bSW6zf 可见: 1. for 循环变量只有一份  2. 单行的defer...

3575
来自专栏Python爬虫与数据挖掘

Python正则表达式初识(七)

继续分享Python正则表达式的基础知识,今天给大家分享的特殊字符是“s”、“S”,具体的教程如下。

1337
来自专栏java一日一条

自己动手实现一个 Java Class 解析器

最近在写一个私人项目,名字叫做ClassAnalyzer,ClassAnalyzer的目的是能让我们对Java Class文件的设计与结构能够有一个深入的理解。...

1184
来自专栏互联网研发闲思录

junit单元测试中私有方法测试

1、单元测试可以对系统逻辑进行每个单元模块的测试。 2、单元测试也可以作为回归测试的依据,可以避免升级完善功能时引入问题。 3、单元测试要求将代码写的更清晰,更...

2747
来自专栏Django Scrapy

python3 解码base64遇到的问题与解决

错误代码:binascii.Error: Incorrect padding 解决方法 在解码前使用这个方法 if len(message) % 4: ...

3659

扫码关注云+社区

领取腾讯云代金券