Linux - bash - 小坑: IFS

1. 概述

  1. for 循环读取文件内容时, 输出被打得稀碎

2. 场景

  1. 需求
    1. 读入文件
    2. 逐行显示
  2. 源文件

    Continuous Delivery with Docker and Jenkins
    Jenkins 2 Up and Running
    Jenkins 2.x Continuous Integration Cookbook(3rd)
    Jenkins Fundamentals  
  3. 脚本

    #!/bin/bash
    
    for line in `cat ${1}` 
    do 
        echo ${line}
    done 
    
  4. 问题
    1. 输出的结果, 是这样的

      Continuous
      Delivery
      with
      Docker
      and
      Jenkins
      Jenkins
      2
      Up
      and
      Running
      Jenkins
      2.x
      Continuous
      Integration
      Cookbook(3rd)
      Jenkins
      Fundamentals

3. 解决

  1. 原因
    1. 输出前, 需要制定 ifs
  2. ifs
    1. linux 的环境变量
  3. 最终脚本
    ```
    #!/bin/bash

    OLD_IFS=${IFS}
    IFS=""

    for line in cat ${1}
    do
    echo ${line}
    done

    IFS=${OLD_IFS}
    ```

4. 其他

  1. ref
    1. SHELL 读取文件的每一行内容并输出
      1. 用 while 输出, 貌似就没有这个问题...
    2. Shell中IFS用法
  2. 疑问
    1. IFS 这玩意到底是什么鬼
    2. ${1} 是 bash 脚本的参数, 如果说, 脚本里有了 awk 命令, 需要引用 $1, 到底是哪个为准呢?

转载于:https://www.cnblogs.com/xy14/p/11484769.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值