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著:徐焱,张春萌等译,由机 ...
随机推荐
- 5.Python爬虫入门五之URLError异常处理
大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的 ...
- <Java><!!!><面试题>
装箱 & 拆箱 public class Test03 { public static void main(String[] args) { Integer f1 = 100, f2 = 10 ...
- oracle 12c 警告日志位置
Oracle 12c环境下查询,alert日志并不在bdump目录下,看到网上和书上都写着可以通过初始化参数background_dump_dest来查看alter日志路径,还说警告日志文件的缺省位置 ...
- MySQL:用户管理
用户管理部分 一.数据库不安全因素 非授权用户对数据库的恶意存取和破坏: 数据库中重要或敏感的数据被泄露: 安全环境的脆弱性: 二.数据库安全的常用方法 用户标识和鉴别[使用口令鉴别]::该方法由系统 ...
- django面试七
Dango model 几种继承形式抽共享继承不能等实例化,抽象方法必须在子类中实现,Django不对其建立对应的表.class Animal(models.Model): name = models ...
- 识别图片验证码的三种方式(scrapy模拟登陆豆瓣网)
1.通过肉眼识别,然后输入到input里面 from PIL import image Image request.urlretrieve(url,'image') #下载验证码图片 image = ...
- Eclipse_设置_01_自动提示
- SpringBoot(2.0.4.RELEASE)+Elasticsearch(6.2.4)+Gradle简单整合
记录一下SpringBoot(2.0.4.RELEASE)+Elasticsearch(6.2.4)+Gradle整合的一个小例子. 1.在Gradle内加入相关jar包的依赖: compile('o ...
- spring — jdbc 配置文件的设置
---参考配置, 链接mysql 数据库 <!-- 1.配置数据源 --><bean id="dataSource" class="org.sprin ...
- .npy,.mat,.txt转换
.npy--->.txt: http://blog.csdn.net/wgf5845201314/article/details/73825785 .npy<->.mat: i ...