代码如下:

  1. 数组定义法1
  2. arr=( ) # 注意是用空格分开,不是逗号!!
  3.  
  4. 数组定义法2
  5. array
  6. array[]="a"
  7. array[]="b"
  8. array[]="c"
  9.  
  10. 获取数组的length(数组中有几个元素):
  11. ${#array[@]}
  12.  
  13. 遍历(For循环法):
  14. for var in ${arr[@]};
  15. do
  16. echo $var
  17. done
  18.  
  19. 遍历(带数组下标):
  20. for i in "${!arr[@]}";
  21. do
  22. printf "%s\t%s\n" "$i" "${arr[$i]}"
  23. done
  24.  
  25. 遍历(While循环法):
  26. i=
  27. while [ $i -lt ${#array[@]} ]
  28. do
  29. echo ${ array[$i] }
  30. let i++
  31. done
  32.  
  33. 向函数传递数组:
  34. 由于Shell对数组的支持并不号,所以这是一个比较麻烦的问题。
  35. 翻看了很多StackOverFlow的帖子,除了全局变量外,无完美解法。
  36. 这里提供一个变通的思路,我们可以在调用函数前,将数组转化为字符串。
  37. 在函数中,读取字符串,并且分为数组,达到目的。
  38.  
  39. fun() {
  40. local _arr=(`echo $ | cut -d " " --output-delimiter=" " -f -`)
  41. local _n_arr=${#_arr[@]}
  42. for((i=;i<$_n_arr;i++));
  43. do
  44. elem=${_arr[$i]}
  45. echo "$i : $elem"
  46. done;
  47. }
  48.  
  49. array=(a b c)
  50. fun "$(echo ${array[@]})"

纯文本版:

数组定义法1:
arr=(1 2 3 4 5) # 注意是用空格分开,不是逗号!!

数组定义法2:
array
array[0]="a"
array[1]="b"
array[2]="c"

获取数组的length(数组中有几个元素):
${#array[@]}

遍历(For循环法):
for var in ${arr[@]};
do
echo $var
done

遍历(带数组下标):
for i in "${!arr[@]}";
do
printf "%s\t%s\n" "$i" "${arr[$i]}"
done

遍历(While循环法):
i=0
while [ $i -lt ${#array[@]} ]
do
echo ${ array[$i] }
let i++
done

向函数传递数组:
由于Shell对数组的支持并不号,所以这是一个比较麻烦的问题。
翻看了很多StackOverFlow的帖子,除了全局变量外,无完美解法。
这里提供一个变通的思路,我们可以在调用函数前,将数组转化为字符串。
在函数中,读取字符串,并且分为数组,达到目的。

fun() {
local _arr=(`echo $1 | cut -d " " --output-delimiter=" " -f 1-`)
local _n_arr=${#_arr[@]}
for((i=0;i<$_n_arr;i++));
do
elem=${_arr[$i]}
echo "$i : $elem"
done;
}

array=(a b c)
fun "$(echo ${array[@]})"

linux shell编程中的数组定义、遍历的更多相关文章

  1. Linux Shell编程中的几个特殊符号命令 & 、&& 、 ||

    https://blog.csdn.net/hack8/article/details/39672145 Linux Shell编程中的几个特殊符号命令 & .&& . || ...

  2. Linux shell 脚本中使用 alias 定义的别名

    https://www.cnblogs.com/chenjo/p/11145021.html 核心知识点: 用 shopt 开启和关闭 alias 扩展 交互模式下alias 扩展默认是开启的,脚本模 ...

  3. Linux Shell 编程中的特殊符号

    一.井号 # 1.在脚本文件中对一行进行注释. 2.在引号和\符号后不是注释,只是#号本身: echo "12 # hehe" echo '12 # hehe' echo 12 \ ...

  4. 《Linux shell编程中 diff与vimdif的使用》RHEL6

    linux比较2个文件的区别有两个命令: (1)diff (2)vimdiff cp /etc/grub.conf hello 在hello文件的末尾添加zhangsan 使用diff比较2个文件的区 ...

  5. Linux Shell编程参考大全

    本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...

  6. (转)轻松掌握shell编程中数组的常见用法及示例

    缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习 ...

  7. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  8. linux —— shell 编程(编程语法)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...

  9. linux shell编程总结

    linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...

随机推荐

  1. shell脚本实例-for实现批量主机的探测

    #!/usr/bin/bash >ip.txt for i in {2..254} do { ip=192.168.234.$i ping -c1 -W1 $ip &>/dev/n ...

  2. Java学习笔记10(面对对象:构造方法)

    在开发中经常需要在创建初始化对象时候明确对象的属性值, 比如Person对象创建的时候就给Person的属性name,age赋值, 这里就要用到构造方法: 构造方法是类的一种特殊方法,它的特殊性体现在 ...

  3. react native 之 Android物理返回键

    基本用法 根据文档,安卓back键的处理主要就是一个事件监听: BackAndroid.addEventListener('hardwareBackPress', this.onBackPressed ...

  4. anaconda jupyter notebook修改默认文件路径

    使用anaconda附带的jupyter,想要改变默认运行文件路径,直接在cmd中输入jupyter notebook会提示:jupyter不是内部命令! 可能是anaconda代理了他所安装的软件, ...

  5. libev

    libev是一个**事件驱动库**,它需要循环探测事件是否发生,在Linux上实际是封装了epoll等系统调用. 其循环过程由ev_loop( )函数设置,循环体是ev_loop结构. //创建事件循 ...

  6. TCP三次握手及释放连接详解(转)

    一.TCP头部简介 ACK :即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符.表示发来的数据已确认接收无误.TCP报文格式中的控制位由6个标志比特构成,其中一个就是ACK,ACK为1表 ...

  7. python基于并发与socket实现远程文件传输程序

    FTP程序 Client: * bin/start.py 程序入口 * conf/配置文件存放 * core/ * auth.py 登陆,注册以及上传下载查看当前文件夹下文件以及删除功能存放 * cl ...

  8. Spring cron表达式详解

    一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示: 代表含义 是否必须 允许的取值范围 允许的特殊符号 秒 是 0-59 , - * ...

  9. MAC使用mysql报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    遇到这种错误,需要重置密码. Step1:停止mysql,命令如下: $ sudo service mysql stop 或者是 $ sudo /usr/local/mysql/support-fil ...

  10. find 以及linux 和windows 文件互传

    1. find  命令  查找文件或目录 同时也会用到的有 which   whereis   locate   经常也会遇到一些快捷键  ctrl  +  l  e  a  w  u  k     ...