Bash: read a file line-by-line and process each segment as parameters to other prog

后端 未结 3 1452
轻奢々
轻奢々 2020-12-02 16:48

I have some dirty work to do, so a Bash script seems to be a good choice. I\'m new to Bash, and the experience makes me kind of frustrated.

The file mapfiles.txt con

相关标签:
3条回答
  • 2020-12-02 17:36

    You can simplify this a lot:

    while read file key log lat
    do
      echo "$cmd" "$key" "$log" "$lat" "$file"
    done < "$input"
    
    0 讨论(0)
  • 2020-12-02 17:44

    Using GNU Parallel you can do it in a single line + you get it done in parallel for free:

    cat mapfile.txt | parallel --colsep '\s' prog {2} {3} {4} {1}
    

    Watch the intro videos to learn more: http://www.youtube.com/watch?v=OpaiGYxkSuQ

    0 讨论(0)
  • 2020-12-02 17:44

    prog could have disappeared because $cmd is not exported. Your version of /bin/sh might execute the while statement in a separate shell. This should not be the case, and this is not the case for my installation of bash, but perhaps yours behaves in interesting ways in this department.

    UPD I see that you have several boxes that give the same results. This makes the subshell theory unlikely. Perhaps you have some funny characters in your script and/or source file.

    I have copied and pasted your script and your source file to my gentoo box and it gives the expected results. Perhaps you should do the same, and compare the files with your original ones.

    0 讨论(0)
提交回复
热议问题