我使用 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
输入文件名我作为参数
传递答案 0 :(得分:1)
这是因为下面的行,>
的每次迭代都会覆盖(for-loop
运算符)文件。
echo "$designname,$types,$ptype" > mugsku.csv
您应该使用追加运算符(>>
),例如
echo "$designname,$types,$ptype" >> mugsku.csv
您可以对脚本进行更多优化,
"$INPUT_FILE"
-r
添加read
标记,以使其更加强大。