Bash 使用Shell脚本生成两个具有不同值的Outputfile
我正在使用shell脚本从输入wile生成2个输出文件。一个已成功创建,但第二个文件只有一行 假设我有一个包含3行的输入文件(csv),它生成一个包含其他信息的输出文件,其中包含所有3行,但第2个输出文件仅包含其他值,仅包含1行值。 这是我的密码:Bash 使用Shell脚本生成两个具有不同值的Outputfile,bash,shell,csv,output,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
#! /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
#/bin/bash
SAVEIFS=$IFS
IFS=“,”
如果[$#-gt 0];然后
INPUT_FILE=“$1”
echo“品牌、宽度(mm)、高度(mm)、深度(mm)”>mug.csv
echo的设计名称、类型、产品名称.mugsku.csv
阅读品牌设计名称宽度高度类型时
做
echo“$brand.$width,$height,$depth”>>mug.csv
echo“$designname,$types,$ptype”>mugsku.csv
完成<$INPUT\u文件
其他的
echo“未传递参数。传递有效文件名”
fi
我将输入文件名作为一个参数传递这是因为下面的一行,它在循环的每次迭代中都会重写(
操作符)文件
echo "$designname,$types,$ptype" > mugsku.csv
您应该使用append操作符(>
),例如
您可以对脚本进行更多优化
“$INPUT\u FILE”
-r
标志添加到read
以使其更加健壮请再帮我一件事。我正在读csv文件,它只读2而不是3。如果我在输入文件的最后一行输入enter,它会读第3行。你能告诉我这是什么原因吗。@Urvashi:你能解释一下吗?我不能很清楚地理解。我又一次从你那里得到了解决办法
echo "$designname,$types,$ptype" >> mugsku.csv