linux shell编程中的数组定义、遍历
代码如下:
数组定义法1:
arr=( ) # 注意是用空格分开,不是逗号!! 数组定义法2:
array
array[]="a"
array[]="b"
array[]="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=
while [ $i -lt ${#array[@]} ]
do
echo ${ array[$i] }
let i++
done 向函数传递数组:
由于Shell对数组的支持并不号,所以这是一个比较麻烦的问题。
翻看了很多StackOverFlow的帖子,除了全局变量外,无完美解法。
这里提供一个变通的思路,我们可以在调用函数前,将数组转化为字符串。
在函数中,读取字符串,并且分为数组,达到目的。 fun() {
local _arr=(`echo $ | cut -d " " --output-delimiter=" " -f -`)
local _n_arr=${#_arr[@]}
for((i=;i<$_n_arr;i++));
do
elem=${_arr[$i]}
echo "$i : $elem"
done;
} array=(a b c)
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编程中的数组定义、遍历的更多相关文章
- Linux Shell编程中的几个特殊符号命令 & 、&& 、 ||
https://blog.csdn.net/hack8/article/details/39672145 Linux Shell编程中的几个特殊符号命令 & .&& . || ...
- Linux shell 脚本中使用 alias 定义的别名
https://www.cnblogs.com/chenjo/p/11145021.html 核心知识点: 用 shopt 开启和关闭 alias 扩展 交互模式下alias 扩展默认是开启的,脚本模 ...
- Linux Shell 编程中的特殊符号
一.井号 # 1.在脚本文件中对一行进行注释. 2.在引号和\符号后不是注释,只是#号本身: echo "12 # hehe" echo '12 # hehe' echo 12 \ ...
- 《Linux shell编程中 diff与vimdif的使用》RHEL6
linux比较2个文件的区别有两个命令: (1)diff (2)vimdiff cp /etc/grub.conf hello 在hello文件的末尾添加zhangsan 使用diff比较2个文件的区 ...
- Linux Shell编程参考大全
本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...
- (转)轻松掌握shell编程中数组的常见用法及示例
缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习 ...
- linux —— shell 编程(文本处理)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...
- linux —— shell 编程(编程语法)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...
- linux shell编程总结
linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...
随机推荐
- 20165214 实验二 Java面向对象程序设计
一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:朱文远 学号:20165214 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:13:45 - 15:25 实验序号:二 ...
- WIFI探针 搞定
- 在html5中不支持<table>的cellpadding 和 cellspacing ; 2) 如何用css实现 cellpadding, cellspacing ; 3) tr , th 是 有 border, 没有 padding 的.
1.初始: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- centos6.6安装hadoop-2.5.0(四、hadoop HA安装)
操作系统:centos6.6 环境:selinux disabled:iptables off:java 1.8.0_131 安装包:hadoop-2.5.0.tar.gz HA模式下的HADOOP完 ...
- 关于DDOS的主动与智能防御
- 善守者藏于九地之下 - - 狡兔九窟 - 一.分配足够多的网关服务器 让用户总一个终点,可以进入游戏.多分配,动态分配,定期更新 二.用户分组分级 分组可以根据用户的生成时间, 在线时 ...
- ubuntu下利用docker搭建gitloab手记
0.环境信息 ubuntu server 14.04 lts 64位版本 Docker version 17.05.0-ce, build 89658be 1.从阿里加速站下载gitlab sudo ...
- JS/JavaScript简介及基本常识
JavaScript (JS)以客户端事件为驱动的弱类型脚本语言 JS脚本一般写在<head>内部 流:文本流.html流 回避关键字的基本策略:单词合并(v_function) null ...
- Scrum_Sprint
1.计划会议过程 经过一天的讨论研究,我们对该项目进行了需求分析,确定了这周所要实现的各个功能 并做好了任务看板,并将项目的各个功能分成一个个任务,进行了初步的分工 2.backlog BACKLOG ...
- Templates中的macro和include标签
1.macro标签 1.作用:相当于在模板中声名函数 2.使用方法: 语法:{% macro 名称(参数列表) %} xxx {% endmacro %} 创建 macro.html 模板文件 - ...
- [LeetCode&Python] Problem 733. Flood Fill
An image is represented by a 2-D array of integers, each integer representing the pixel value of the ...