【问题标题】:Generate two Outputfile with different values using Shell script使用 Shell 脚本生成两个具有不同值的输出文件
【发布时间】:2017-01-12 07:42:35
【问题描述】:

我正在使用 shell 脚本 从输入中生成 2 个输出文件。一个成功创建但第二个文件只有一行。

假设我有一个包含 3 行的输入文件 (csv)。它生成一个输出文件,其中包含所有 3 行的一些其他信息,但第二个输出文件仅生成具有 1 行值的其他值。 这是我的代码:

#! /bin/bash
SAVEIFS=$IFS
IFS=","
if [ $# -gt 0 ]; then
    INPUT_FILE="$1" 
    echo 'Brand,Width (mm),Height (mm),Depth (mm)' > mug.csv 
    echo 'Design Name, Type,Product ' > mugsku.csv 
    while read Brand designname width height types 
    do  
        echo "$brand.$width,$height,$depth" >> mug.csv
        echo "$designname,$types,$ptype" > mugsku.csv 
    done < $INPUT_FILE
else
    echo "No argument passed.Pass valid file name"
fi

我作为参数传递的输入文件名

【问题讨论】:

    标签: bash shell csv output


    【解决方案1】:

    这是因为下面的行在for-loop 的每次迭代中都会覆盖(&gt; 运算符)文件。

    echo "$designname,$types,$ptype" > mugsku.csv 
    

    您应该一直在使用附加运算符(&gt;&gt;),

    echo "$designname,$types,$ptype" >> mugsku.csv
    

    您可以对脚本进行更多优化,

    1. 双引号你的变量,例如如"$INPUT_FILE"
    2. -r 标志添加到read 以使其更加健壮。

    【讨论】:

    • 请再帮我一件事。我正在读取 csv 文件,它只读取 2 而不是 3。如果我在输入文件的最后一行输入,它会读取第 3 行。你能告诉我什么会是这个原因。
    • @Urvashi:你能再解释一下吗?看不懂
    • 再次得到stackoverflow.com/questions/20010741/…你的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多