读取文本文件的第一行后,bash脚本while循环停止

时间:2019-03-03 12:27:10

标签: bash while-loop readfile

目标:

我有一个bash脚本可以

  
      
  • 读取文件中的行;
  •   
  • 将每行的值设置为参数;和
  •   
  • 使用参数作为路径的一部分。
  •   

脚本:

fileName='s3Path.txt'
while IFS='' read -r line || [[ "$line" ]]; do

        printerType=$line
        gcPath=s3://gc-reporting-pud-production/structured_printer_log_files/
        gcFullPath=$gcPath$printerType
        echo $gcFullPath
done < $fileName

问题:

循环在文件的第一行之后停止。我该怎么解决?

2 个答案:

答案 0 :(得分:1)

我无法重现您的问题。对我来说,循环遍历某个测试文件中的所有行。

您可以尝试以下脚本,该脚本基本上与循环执行相同的操作。我还希望这个替代脚本比您的循环更有效率。

mapfile -t lines < s3Path.txt
printf 's3://gc-reporting-pud-production/structured_printer_log_files/%s\n' "${lines[@]}"

答案 1 :(得分:0)

编写bash script时,脚本应以以下内容开头:

#!/bin/bash

明确指定要使用bash(如果您使用bash作为shell,则可以不使用bash。

我已经执行了您的脚本,并且可以很好地处理我的输入数据。

问题的根源可能是:

  • 脚本第一行中缺少#!/bin/bash
  • 与您的输入文件有关