使用Shell脚本生成具有不同值的两个Outputfile

时间:2017-01-12 07:42:35

标签: bash shell csv output

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

假设我有一个包含3行的输入文件(csv)。它生成一个输出文件,其中包含所有3行的其他信息但是第2个输出文件仅生成一些其他值,仅包含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

输入文件名我作为参数

传递

1 个答案:

答案 0 :(得分:1)

这是因为下面的行,>的每次迭代都会覆盖(for-loop运算符)文件。

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

您应该使用追加运算符(>>),例如

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

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

  1. 双重引用您的变量,例如如"$INPUT_FILE"
  2. -r添加read标记,以使其更加强大。