读取/etc/hosts文件并处理为数组——练习实例

#!/bin/bash
i=0
while read line
do
  hosts[i++]=$line
done < /etc/hosts

# 或者使用C风格的自增,但需要确保Bash版本支持此特性并且启用了扩展语法
# while read line; do hosts[i++]=line; done < /etc/hosts

echo "数值"
echo "${hosts[@]}"
echo "索引与值"
for index in "${!hosts[@]}"; do
    echo "$index : ${hosts[index]}"
done

脚本内容详解:

  1. 初始化索引变量:

    Bash
    1i=0

    初始化数组索引变量i为0,以便在接下来的循环中正确地给数组赋值。

  2. 读取并处理文件内容:

    Bash
    1while read line
    2do
    3  hosts[i++]=$line
    4done < /etc/hosts

    使用while循环和read命令逐行读取/etc/hosts文件的内容。每一行内容被读取后,通过hosts[i++]=$line的形式添加到hosts数组中,这里尝试模拟C风格的自增,但在Bash中直接这样使用可能会有问题,正确的Bash语法应避免这种自增形式。

    修正建议: 应使用Bash支持的自增方式,例如,在循环外部初始化i,在循环体内通过((i++))((i=i+1))来递增索引,然后赋值,如:

    Bash
    while read line; do
        hosts[i]=$line
        ((i++))
    done < /etc/hosts
  3. 输出数组内容:

    • 数值输出:

      Bash
      echo "数值"
      echo "${hosts[@]}"

      输出数组hosts的所有元素,[@]保证了数组元素正确无遗漏地输出,即使元素中含有空格。

    • 索引与值:

      Bash
      echo "索引与值"
      for index in "${!hosts[@]}"; do
         echo "$index : ${hosts[index]}"
      done

      遍历数组hosts的所有索引(使用${!hosts[@]}),并打印出每个索引及其对应的值。

综上,该脚本演示了如何在Bash中读取文件内容到数组、遍历数组索引和值的基础操作,但需注意根据Bash的具体语法要求调整自增表达式以确保脚本的正确执行。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值