当前位置: 首页 > 编程笔记 >

shell 使用数组作为函数参数的方法(详解)

杜曜灿
2023-03-14
本文向大家介绍shell 使用数组作为函数参数的方法(详解),包括了shell 使用数组作为函数参数的方法(详解)的使用技巧和注意事项,需要的朋友参考一下

因工作需要,需要使用shell开发一些小工具,当使用数组作为函数参数时,发现只能传递数组的第一个元素,数组后面的元素不能传递到函数内。

#!/bin/bash

function showArr(){

  arr=$1

  for i in ${arr[*]}; do
    echo $i
  done

}

regions=("GZ" "SH" "BJ")

showArr $regions

exit 0

把代码保存为test.sh后执行,只输出了第一个元素。

./test.sh
GZ

$1表示获取函数的第一个参数,而函数的第一个参数就是regions数组,这样就奇怪了,为什么只能获取到数组的第一个元素呢?

经测试

echo $regions

只会输出第一个元素,所以使用regions作为参数传递,只会传递第一个元素。

因此需要把参数写成 “${regions[*]}” 才可以作为数组传递。

代码修改后如下:

#!/bin/bash

function showArr(){

  arr=$1

  for i in ${arr[*]}; do
    echo $i
  done

}

regions=("GZ" "SH" "BJ")

showArr "${regions[*]}"

exit 0

运行后输出数组所有元素,因此修改后可以把数组作为函数参数传递使用。

./test.sh
GZ
SH
BJ

以上这篇shell 使用数组作为函数参数的方法(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍javascript中函数作为参数调用的方法,包括了javascript中函数作为参数调用的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript中函数作为参数调用的方法。分享给大家供大家参考。具体分析如下: 先来看示例: 这段代码执行的顺序是:从上往下顺序解释执行,这是JS的规定。 这里主要说明一下m.eachMap()中函数做为参数是怎么传递并执行的:

  • 问题内容: 如何使用Python列表(例如)作为函数的参数,例如: 问题答案: 您可以使用splat运算符执行此操作: 这使函数将每个列表项作为单独的参数接收。这里有一个描述:http : //docs.python.org/tutorial/controlflow.html#unpacking- argument-lists

  • 问题内容: 我想创建一个类,可以存储符合特定协议的对象。对象应存储在类型数组中。根据Swift文档协议可以用作类型: 由于它是一种类型,因此可以在允许使用其他类型的许多地方使用协议,包括: 作为函数,方法或初始化程序中的参数类型或返回类型 作为常量,变量或属性的类型 作为数组,字典或其他容器中项目的类型 但是,以下内容会生成编译器错误: 协议“ SomeProtocol”只能用作通用约束,因为它具

  • 本文向大家介绍Scala使用方法作为函数值,包括了Scala使用方法作为函数值的使用技巧和注意事项,需要的朋友参考一下 示例 Scala编译器将自动将方法转换为函数值,以将其传递给高阶函数。 在上面的示例中,MyObject.mapMethod不是函数调用,而是map作为值传递给。实际上,map 需要传递给它的函数值,如其签名所示。对于签名map的List[A](类型的对象的列表A)是: 该f:

  • 我想传递聚合函数,如min,max等作为查询参数使用元组。 pgException:在io.vertx.pgclient.impl.codec.errorResponse.toException(errorResponse.java:29)在io.vertx.pgclient.impl.codec.prepareStatementCommandCodec.handleerrorResponse(p

  • 本文向大家介绍使用JSON作为函数的参数的优缺点,包括了使用JSON作为函数的参数的优缺点的使用技巧和注意事项,需要的朋友参考一下 一直对json不太懂,最近看了一些介绍才发现,原来这个东西这么好用,下面就为大家介绍一下 1、我们可以随时为一个函数添加/删除参数或在任意参数位置添加新参数,而不会像传统参数一样必须按照规定的顺序书写,而且每次添加或删除函数某个参数都要函数内容进行修改。而使用JSON