浏览 26
已结题

shell中怎么按行读取文件内容(每一行包含空格)并保存到数组变量中,且一行内容对应一个数组元素

文件内容如下:
ENSRNOG00000066169 ENSRNOG00000066169 Gene Expression
ENSRNOG00000070168 Olr56 Gene Expression
ENSRNOG00000070901 Irgq Gene Expression
ENSRNOG00000018029 Doc2g Gene Expression

本来想要用read命令按行读取文件内容赋值给变量,然后直接将每行对应的变量内容加上引号输出成一整行,再重定向给另一个文件,再将文件内容赋值给一个变量,最后将该变量数组话就行;
代码如下:

#!/bin/bash
cat $1 | while read line
        arrays=("$line")
        echo -n "\"${arrays[i]}\" " >> proceed.txt
kang=$(cat proceed.txt)
ARRAYS=($kang)
echo ${ARRAYS[0]}
echo ${ARRAYS[2]}

可是由于每行中存在空格,导致每一行就不是对应一个数组元素,将变量数组化的时候,会自动将空格视为分隔,分成多个数组元素。
运行结果如下:
"ENSRNOG00000066169
Gene

请问大家这该怎么改,或者怎么写,万分感谢!

0

  • 编辑 收藏 删除
  • 追加酬金 (90%的用户在追加酬金后获得了解决方案)

    当前问题酬金

    ¥ 0 (可追加 ¥500)

    支付方式

    扫码支付

    加载中...

    提供问题酬金的用户不参与问题酬金结算和分配

    支付即为同意 《付费问题酬金结算规则》

    1 条回答 默认 最新

    • 有问必答小助手 2022-01-18 09:41
      关注

      你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


      本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


      因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

      本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
      按下Enter换行,Ctrl+Enter发表内容