admin 管理员组

文章数量: 1184232


2023年12月24日发(作者:鸟哥的linux私房菜在线阅读)

shell函数参数传递

shell函数参数传递是指,在shell脚本编程中,函数参数的传递方式。Shell函数参数传递主要分为两种情况:在调用函数时明确传递参数值和在调用函数时传递形参变量值,其中前者是传值调用,后者是传名调用。传值调用,就是在调用函数时,给函数传递一个实参,即具体的值,而传名调用,就是在调用函数时,传递的是形参的变量名,而不是变量的值。

传值调用也称为值传递,其特点是,函数调用只是将实参的值赋给形参的变量,函数的调用者和被调用者之间不存在数据关联。也就是说,函数中的参数只是将实参的值赋给形参,实参的值在函数中改变,但不会影响实参的值。举个例子,比如,在函数中调用了一个add函数,该函数有两个参数x和y,实参传递的是3和4.当被调用时,脚本会执行创建两个新变量 x 和 y, 将实参 3 和 4 分别赋给这两个新变量, 执行完 add 函数后, x 和 y 就不复存在了。

而传名调用也称为址传递,其特点是,在函数调用时,会传递形参变量的变量名给函数,而函数内部可以通过形参变量的变量名来修改实参的值,修改的同时,实参的值也会改变。也就是说,在函数的调用过程中,实际上是一种数据关联,当函数中的参数改变时,实参的值也随之改变,而且调用者和被调用者之间存在数据关联,此时函数就被称为传名调用或址传递。

在 shell 脚本编程中,我们可以通过 $# 来传递参数,这意味着参数值会传递给函数,然后函数就可以使用这些参数值,如果函数中的参数改变,参数也会随之改变,这种方式就是函数参数的传值调用,简单来说,就是把调用函数时的参数值传递给函数,函数就可以根据传入的参数值来执行相应的操作。

另一种情况是传名调用,在传名调用情况下,函数将不仅使用传入参数的值,还会使用变量名,此时,函数中的参数将会修改实参变量,这样,在函数执行时,就能获取更新后的值。具体来说,可以使

用 shell 内置的 shift 命令将参数变量名传递给函数,函数中的变量名可以作为实参使用,而调用者的变量也可以作为实参使用,当函数中的参数值改变时,实参也会随之改变,因此,我们使用 shift 命令来改变函数的参数值,就是传名调用的一种方式。

总的来说,shell函数参数传递就是指在shell脚本编程中,函数参数的传递方式,主要分为传值调用和传名调用,在传值调用时,实参只是将实参的值赋给形参,而在传名调用时,函数将会传递形参变量的变量名给函数,函数内部可以通过形参变量的变量名来修改实参的值,修改的同时,实参的值也会改变,使用$#来传递参数


本文标签: 函数 调用 传递