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 使用数组作为函数参数的方法(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Shell动态生成数组的多种方法
如果对linux shell 数组不是很熟悉的话,请看上一篇文章:linux shell 数组建立及使用技巧 ,这篇文章主要讲是动态生成数组系列.方法应该很多,我这里主要以一个求和计算的题目为例进行分析. 题目:请用linux shell 写一段脚本,实现从1..1000中所有偶数的和值. 方法一: 通过while 循环得到需要的结果: start=1; total=0; while [ $start -le 1000 ];do [[ $(($start%2)) == 0 ]]&&tot
-
Shell脚本函数定义和函数参数
一.Shell函数 本教程目前为止所有脚本都是从头到尾执行.这样做很好,但你也许已经注意到有些脚本段间互相重复. shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数. shell中函数的定义格式如下: 复制代码 代码如下: 函数名(){ command1 command2 ... commandN [ return value ] } 如果愿意,可在函数名前加上关键字function,这取决于使用者. 复制代码 代码如下: funct
-
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后执行,只输出了第一个元素. ./t
-
shell脚本无密码登录 expect的使用方法详解
shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了. 从网上查到使用expect可以,简单研究了一下,效果不错. 因为我的操作系统没有安装expect,所以直接"yum -y install expect",你可以根据你的操作系统安装expect,或者源码编译. 安装好之后就可以使用了,这里有几种方法: 一.单独写一个脚本 如 auto_scp
-
对python函数签名的方法详解
函数签名对象,表示调用函数的方式,即定义了函数的输入和输出. 在Python中,可以使用标准库inspect的一些方法或类,来操作或创建函数签名. 获取函数签名及参数 使用标准库的signature方法,获取函数签名对象:通过函数签名的parameters属性,获取函数参数. # 注意是小写的signature from inspect import signature def foo(value): return value # 获取函数签名 foo_sig = signature(foo)
-
Linux环境下Oracle安装参数设置方法详解
前面讲了虚拟机的设置和OracleLinux的安装,接下来我们来说下Oracle安装前的准备工作. 1.系统信息查看 系统信息查看 首先服务器ip:192.168.8.120 服务器系统:Oracle Linux Server release 6.5 服务器主机名:oracle-learn 查看磁盘空间情况: [root@oracle-learn ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 32G 4.8G 26G
-
Python sep参数使用方法详解
这篇文章主要介绍了Python sep参数使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python中sep不是函数,它是print函数的一个参数,用来定义输出数据之间的间隔符号. 具体用法如下: 同时打印多个字符串的时候,每个字符串都会自动默认以空格作为每个字符串之间的间隔. print("abc", "uuu", "oop") # abc uuu oop 如果在多个字符串的最后
-
Java实现优雅的参数校验方法详解
目录 一.引子 二.如何优雅地校验参数 2.1 官方指导意见 2.2 注解用法说明 一.引子 要对方法的参数进行校验,最简单暴力的写法是这个样子: public static void utilA(String a,BigDecimal b){ if (StringUtils.isEmpty(a)){ System.out.println("a不可为空"); return; } if (b == null){ System.out.println("b不可为空");
-
inux下gettimeofday函数windows替换方法(详解)
实例如下: #include <time.h> #ifdef WIN32 # include <windows.h> #else # include <sys/time.h> #endif #ifdef WIN32 int gettimeofday(struct timeval *tp, void *tzp) { time_t clock; struct tm tm; SYSTEMTIME wtm; GetLocalTime(&wtm); tm.tm_year
-
vue iview组件表格 render函数的使用方法详解
如果要在标签中加入属性,例如img 中src属性 a标签中href属性 此时需要用到 attrs 来加入而不是props { title: '操作', key: 'action', align: 'center', render: function (h, params) { return h('div', [ h('Button', { props: { type: 'primary', size: 'small' }, style: { marginRight: '8px' }, on
-
对python numpy数组中冒号的使用方法详解
python中冒号实际上有两个意思:1.默认全部选择:2. 指定范围. 下面看例子 定义数组 X=array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]]) 输出为5x4二维数组 第一种意思,默认全部选择: 如,X[:,0]就是取矩阵X的所有行的第0列的元素,X[:,1] 就是取所有行的第1列的元素 第二种意思,指定范围,注意这里含左不含右 如,X[:, m:n]即取矩阵X的所有行中的的第m到n-1列数据,含左不含右
-
Python中函数参数匹配模型详解
当我们的函数接收参数为任意个,或者不能确定参数个数时,我们,可以利用 * 来定义任意数目的参数,这个函数调用时,其所有不匹配的位置参数会被赋值为元组,我们可以在函数利用循环或索引进行使用 def f(*args): # 直接打印元组参数 print(args) print('-'*20) # 循环打印元组参数 [print(i) for i in args] ... # 传递一个参数 f(1) print('='*20) # 传递5个参数 f(1, 2, 3, 4, 5) 示例结果: (1,)
随机推荐
- 简单理解vue中track-by属性
- java 线性表接口的实例详解
- Javaweb项目session超时解决方案
- asp.net Parameters.AddWithValue方法在SQL语句的 Where 字句中的用法
- js实现按钮颜色渐变动画效果
- 效率较高的php下读取文本文件的代码 原创
- PHP脚本数据库功能详解(上)
- 为动网论坛添加一个密码嗅探器(DVBBS)
- C#多线程编程中的锁系统基本用法
- Android仿微信选择图片和拍照功能
- Javascript String对象扩展HTML编码和解码的方法
- ASP.NET中使用Application对象实现简单在线人数统计功能
- Apache多路复用模块(MPMs)介绍
- jQuery EasyUI tree 使用拖拽时遇到的错误小结
- jQuery实现图片向左向右切换效果的简单实例
- 使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
- C++ MD5的源码实例详解
- C# 调用Delphi dll 实例代码
- 浅谈java 面对对象(抽象 继承 接口 多态)
- java 中String和StringBuffer与StringBuilder的区别及使用方法