Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用Shell脚本生成两个具有不同值的Outputfile_Bash_Shell_Csv_Output - Fatal编程技术网

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

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

我正在使用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
#/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