读取多行文本到数组
创建一个文本文件,内容如下
1 zhangsan 男 10
2 liis 女 12
3 wangwu 男 17
读取这个文件中所有人的信息
#!/bin/bash
while read u
do
echo $u
done < ./test.txt
上述shell,执行顺序:
- 读取文本内容给到 while 循环
- while循环将每一行数据交给 read
- 由 read 将每一行的数据 给到 变量 u
- 最终实现遍历
按性别统计人数
#!/bin/bash
declare -A count_by_sex
while read u
do
sex=`echo $u | awk '{print $3}'`
# 第一种. 分步定义统计变量
#count=`echo $[${count_by_sex[$sex]}+1]`
#count_by_sex[$sex]=`echo $count`
# 第二种. 直接使用数组自增
#let count_by_sex[$sex]++
# 第三种. 将第一种方法融合成一条
count_by_sex[$sex]=`echo $[${count_by_sex[$sex]}+1]`
done < ./test.txt
for i in ${!count_by_sex[@]}
do
echo $i : ${count_by_sex[$i]}
done
写入多行文本到文件
#!/bin/bash
echo "1
2
3
4" > echo_lines.txt
cat <<-FFF > cat_lines.txt
1
2
3
4
FFF
以上两种都能将指定格式的数据写入文本。
需要注意的是
echo 方式引号如果没和数据在一行,会有一个空行
cat 方式说明
<< 表示将FFF 中定义的内容收集到 cat 中
FFF 定义多行文本结束符,通常这个标识符使用 EOF(end of file)并非只能EOF
>/>> cat_lines.txt 将cat 收集到的文本以覆盖/追加的方式重定向到文件 cat_lines.txt 中