bash数组应用之:数组的定义

如何定义数组

例子 1:定义常量数组

ARR1=(A B C D)
echo ${#ARR1[@]}

ARR2=()
echo ${#ARR2[@]}

数组ARR1包含4个元素,数组ARR2包含0个元素。

例子 2:从字符串变量定义数组

STR="AA BB CC"
ARR=(${STR})
echo ${#ARR[@]}

ARR包含3个元素。

例子 3:从字符串变量定义数组,指定域分隔符

STR="AA-BB-CC"
ARR1=(${STR})
echo ${#ARR1[@]}
IFS=- ARR2=(${STR})
echo ${#ARR2[@]}

这个例子中,ARR1包含一个元素(AA-BB-CC),而ARR2包含3个元素(AA, BB, 和CC),因为定义ARR2前指定了分隔符(-)。

例子 4:从命令的执行结果按行定义数组

假设文本文件a.txt包含3行内容:

AAA
BBB
CCC

定义数组:

ARR=($(cat a.txt))
echo ${#ARR[@]}

数组包含3个元素。

猜,如果a.txt定义如下内容:

AAA BBB CCC
aaa bbb ccc

上述数组ARR包含几个元素? --- 答: (6个)
为什么?因为

STR=$(cat a.txt)
echo $STR

这个执行的结果是:AAA BBB CCC aaa bbb ccc,把多行拼成了一行。

那么要按行存入数组,怎么办呢?
我也没有想到更好的办法,只能按行读入,然后按行赋值带数组:

n=0
while read a; do
   ARR[$n]=$a
   ((n++))
done < a.txt

echo ${#ARR[@]}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • // 1. 数组长度 var arr = ['aaa', 'bbb', 'ccc', 'ddd']; ...
    月明清风阅读 3,561评论 0 0
  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 5,503评论 0 9
  • 1.用js实现随机选取10~100之间的10个数字,存入一个数组,并排序 //要是获取不重复的,则对随机数...
    persistlu阅读 10,933评论 0 0
  • 每次兼职都是一种新的体验,但都会有相同的体会:生活不易。 周四周五学校运动会,在一直被我誉为亲生的商学院校区举行。...
    空欢喜呀阅读 1,592评论 0 2
  • 悲伤 水哗哗地流淌着,顺着下水道,敷衍似的随意打上一两个旋儿,便迫不及待地奔涌下去,没丝毫的留恋,顺带着又捎走了一...
    蝎子88阅读 1,397评论 0 0