shell编程向函数传递数组
来源:互联网 发布:自动注音软件 编辑:程序博客网 时间:2024/06/11 21:11
有时候 ,可能需要向函数中传递 数组,这个时候,就需要向 函数中传递数组, 本文以排序为例,简单的演示如何向函数 传递数组。
大家都知道 向函数中传递参数 可以用$1 这个变量即可。 但是 如果 要传递数组 可能不行哦。 直接看下面的例子
#!/bin/bashfunction mytestfun (){newarray=$1echo "the received array is ${newarray[*]}"}arr=(1 2 3 4 5)mytestfun ${arr}
这里 我向mytestfun 传入一个数组 作为第一个参数。结果如下:
可以看到 此时 只是把数组的 第一个元素 传了进来,数组并没有传进来。
正确的写法 如下:
#!/bin/bash# 如何向函数传递数组 ## 对数组 排序 function sort(){local newarrnewarr=(` echo "$@" `)len=${#newarr[@]}for((i=0; i<$len-1; i++)){ for((j=0; j<$len-1-i; j++)){ if [[ ${newarr[j]} -gt ${newarr[j+1]} ]]; then temp=${newarr[j]} newarr[j]=${newarr[j+1]} newarr[j+1]=$temp fi }}echo ${newarr[*]}}# 用户输入数组#read -p "please input an array " -a arrarr=(1 3 5 45 6 78 2 7 23)args=`echo ${arr[*]}`arr=(`sort ${args}`)# 打印数组for item in ${arr[*]};doecho $item |tr '\n' ' 'done
正确的做法, 是这样, 先把数组 转成一个 类似字符串的东西, args ,之后把args 这个 ’数组‘ 字符串 扔给被调用函数sort() ,在sort 内部 通过`echo $@` 转成 shell数组,这样就可以 操作, 数组了。此时 在函数内部完成排序,但此时 排序的是 newarr ,原来的顺序 并没有改变, 怎么办呢?
"$@"将命令行参数视为单独的字符串, 代表所有的参数位置,但是代表各位置参数组成的串行.
这时候需要把数组 在通过函数 返回出去, 这里我使用echo 返回字符串。 arr=(`sort ${args}`) 再把字符串 转成 数组, 这样就相当于把数组 又传递出来了。
可以看出 shell 编程 它的处理方式,是把数组当成 字符串进行传递,之后在传出字符串。
总结: 本文主要讲解了,数组 如何在函数中传递,包括传入和传出。
分享快乐,留住感动。 2017年 10月 06日 星期五 20:06:27 ---biaoge
阅读全文
0 0
- shell编程向函数传递数组
- Shell 向函数传递 数组
- 向函数传递数组
- 以不同方式向Shell函数传递数组参数
- shell 向函数传递数组和从函数返回数组的一个细节问题
- 向函数传递二维数组
- C++ 向函数传递数组
- c 向函数传递多维数组
- c 向函数传递多维数组
- 无法向函数传递一个数组
- 向函数传递一维数组
- php向js函数传递数组
- C++如何向函数传递数组
- 能否向函数传递一个数组?
- C专家编程 十五 使用指针向函数传递一个多维数组
- C++函数的数组参数—向函数传递数组
- C++函数的数组参数—向函数传递数组
- C++函数的数组参数—向函数传递数组
- Java 多线程(PART VIII)synchronized(I)
- [T13365]他
- python库函数-datetime
- Java中运算符的优先级
- c python shell文件读写
- shell编程向函数传递数组
- SSM框架入门和搭建
- Cookie/Session机制详解
- URAL 1089|Verification with a Vocabulary|暴力
- 数据库建立远程链接的方法
- qbxt Day 6 搜索+乱搞+差分约束
- Spring面向切面编程——什么是面向切面编程
- 《着色器和屏幕特效》读书笔记第八章-用Unity的渲染纹理实现屏幕特效
- lua_func.hpp