Linux bash函数详解(linux bash命令详解)

shell Linux bash函数详解 Bash函数本质上是一组可以多次调用的命令。函数的目的是帮助您使bash脚本更具可读性,并避免编写重复的代码 By myfreax 18 Aug 2022

Bash函数本质上是一组可以多次调用的命令。函数主要是为了帮助自己使bash脚本制作更加具有可读性,并避免编写反复地编码。

与绝大多数电子计算机语言对比,Bash函数水准十分不够。在教学中,我们在这里详解Bash函数基本知识,同时向大伙儿呈现如何在shell脚本中运用她们。

声明bash函数的句法非常简单。她们能通过两个不同格式声明。第一种格式以函数名称逐渐,脚后跟括号。这必不可少与更比较常见的格式。

function_name () {
  commands
}

单行线版本信息:

function_name () { commands; }

第二种格式以function保留字逐渐,脚后跟函数名。

function function_name {
  commands
}

单行线版本信息:

function function_name { commands; }

花括号{}正中间的命令文件目录是函数的关键。重点围绕函数论的花括号必须通过空格符或回车符与主体分隔。

定义函数根本无法推行它。要开启bash函数,只需运用函数名称。只需在shell脚本中开启函数,就会推行函数论的命令。

一定要在开启一切函数之前定义函数。运用单行线函数时,分号;必须遵循函数中的最后一个命令。您应该从始至终尝试保持函数名称的描述性。

要更好地理解这一点,客户程序以下案例:

1 #!/bin/bash
2
3 hello_world () {
4   echo 'hello, world'
5 }
6
7 hello_world
〜/hello_world.sh

内行人3中,我们通过命名方式来定义函数,并且用花括号{标志函数论的慢慢。行4是函数体。函数体可以有好多命令。

5,结束花括号},定义hello_world函数末尾。内行人7我们正在推行该函数。您可以根据需要多次推行该函数。假如你运行该脚本制作,这将会打印出hello, world

变量修饰符

全局性变量是可以从脚本制作中的任何位置访问的变量,与修饰符范围无关紧要。在Bash中,默认情况下所有变量都定义为全局性变量,哪怕是在函数内部构造声明也是如此。

能用local关键字在函数身体中声明一部分变量,并且一定要在该函数内部使用。我们可以在不同种类的函数中运用一样名称的一部分变量。

为了更好地说明变量修饰符范围在Bash中原理,让大家都充分考虑一个例子:

#!/bin/bash
var1='A'
var2='B'
my_function () {
  local var1='C'
  var2='D'
  echo "Inside function: var1: $var1, var2: $var2"
}
echo "Before executing function: var1: $var1, var2: $var2"
my_function
echo "After executing function: var1: $var1, var2: $var2"
〜/variables_scope.sh

脚本制作最开始定义2个全局性变量var1var2。接着就是一个设置一部分变量var1并修改全局性变量的函数var2

假如你运行该脚本制作,您应该看到以下导出来:

Before executing function: var1: A, var2: B
Inside function: var1: C, var2: D
After executing function: var1: A, var2: D

从上面的导出来中,我们可以得出结论。如果是在函数身体中设置一个一部分变量,其名称与现有全局性变量的名称一样,则这将会在于全局性变量。也可以在函数内变动全局性变量。

传参

与真正意义上编程语言中的函数不一样,Bash函数不能你一直在开启的时候会传参。

当bash函数结束后,其传参是函数中推行的最后一个语句情况,0 说明取得成功和非0十进制数在1 - 255范围内说明失败。

能用return关键字特殊返回状况,并将其分到全局性变量$?return语句会终止函数。你们可以将其视为函数的退出状况。

能从函数中返回随便具体数值,大家应该使用多种方式。简单选择就是将函数得出的结论分到全局性变量。

从函数获得传参的另一个比较强选择是运用echo或printf将值发送到标准输出stdout

#!/bin/bash
my_function () {
  echo "some result"
  return 55
}
my_function
echo $?
$?作为传参
some result
55
#!/bin/bash
my_function () {
  local func_result="some result"
  echo "$func_result"
}
func_result="$(my_function)"
echo $func_result
运用echo作为函数传参
some result

大伙儿开展的函数不是单纯的地将信息内容打印出到标准输出,反倒是运用$()体系分到变量func_result。运用此方法func_result变量将贮存函数得出的结论。

Bash函数基本参数

要将随便总数传送数据给bash函数,只需将她们放进函数名称后面,用空格符分隔就能。最好是做法得用冒号将基本参数转义,以降低风险地使用带空格符的参数。

传输的参数可以通过变量$1$2$3... $n,查找1...n对应于基本参数在函数名后部位。

$0变量储存给函数的名称。$#变量贮存传递给函数的位置参数或者主要参数数量。$*$@变量贮存传递给函数的所有位置参数或者基本参数。

#!/bin/bash
greeting () {
  echo "Hello $1"
}
greeting "Joe"
〜/passing_arguments.sh
Hello Joe

结论

到这里,您应该更好的了解如何编写bash函数。您可能还想把握如何使用Bash函数为很长的命令创建可回忆的快捷命令。

如果您有任何问题或意见和建议,请随时。

LINUX

如何在Ubuntu创建和删除用户(如何在ubuntu创建和删除用户密码)

2023-1-19 9:50:10

LINUX

Linux mkdir 命令创建目录(在使用mkdir命令创建新的目录)

2023-1-19 9:54:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索