如何打印取决于多个数量变量(和数学)的其他变量?

时间:2018-07-19 21:11:17

标签: bash

源文件输入(.csv):

TOTAL FULL PARTIALORDER  FULLORDER  DEVICENAME
10    2    123456        456789     OHWIL8499IPM101
8     0    345678        789605     OHCIN8499IPM102

TOTAL =是完整和部分订单的设备总数。

FULL =顺序不同但位置相同。

PARTIAL / FULL ORDER =订单号。我需要在每个设备名称后打印一个。

需求/目标:

我需要从TOTAL中减去FULL。如果存在差异,我需要更改最后打印的(#OF FULL)个设备名称上的订单号变量。

如果总共有10个设备,并且有2个已装满设备,则我需要打印OHWIL8499IPM101至OHWIL8499IPM108的8个设备,再加上部分订购号。然后是OHWIL8499IPM109-110,后跟完整的订单号。在上面的输入文件示例中,第二行没有区别,因此我只需要打印部分订单号。

所需的输出文件(.csv):

DEVICENAME       ORDERNUMBER  SHIPDATE  TYPE      SYSTEMSKU
OHWIL8499IPM101  123456       ASAP      PROJECT1  12345678
OHWIL8499IPM102  123456       ASAP      PROJECT1  12345678
OHWIL8499IPM103  123456       ASAP      PROJECT1  12345678
OHWIL8499IPM104  123456       ASAP      PROJECT1  12345678
OHWIL8499IPM105  123456       ASAP      PROJECT1  12345678
OHWIL8499IPM106  123456       ASAP      PROJECT1  12345678
OHWIL8499IPM107  123456       ASAP      PROJECT1  12345678
OHWIL8499IPM108  123456       ASAP      PROJECT1  12345678
OHWIL8499IPM109  456789       ASAP      PROJECT1  12345678
OHWIL8499IPM110  456789       ASAP      PROJECT1  12345678

当前脚本:

#!/bin/bash
currentUser=$(/bin/ls -la /dev/console | /usr/bin/cut -d ' ' -f 4)
LOGFILE="/Users/$currentUser/Desktop/kit.csv"
SRCFILE="/Users/$currentUser/Desktop/input.csv"

orderFull=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $4}')
orderPartial=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $3}')
device_name=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $5}')
quantityNum=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $1}')
quantityFull=$(cat "$SRCFILE" | sed 's/,/ /g' | awk '{print $2}')
shipDate=ASAP
projectType=Project1
systemSku=1235678
number=$(echo "$device_name" | head -c 9| tail -c 4)

max_sequence_name=$()
max_sequence_num=$(echo $max_sequence_name | rev | cut -c 1-3 | rev)
if [ -z "$max_sequence_name" ];
then
    max_sequence_name=device_name
    max_sequence_num=100
fi
array_new_sequence_name=()
for i in $(seq 1 $quantityNum);
do
    cnum=$((max_sequence_num + i))
    array_new_sequence_name+=($(echo $device_name$cnum))
done
for sqn in ${array_new_sequence_name[@]};
do
    echo "$sqn,$orderNumber,$shipDate,$projectType,$systemSku,$number" >> $LOGFILE
done

到目前为止,我已经尝试使用以下代码,但是不确定我是否在正确的轨道上。

if [ "$quantityFull" = 0 ]; then
  orderNumber=$(echo "$orderPartial")
else
  math=$(expr $orderPartial - $orderFull)
  #ENTER CODE HERE TO DETERMINE WHICH NAMES TO CHANGE ORDER NUMBER ON
  orderNumber=$(echo "$orderFull")

fi

一旦可以确定,我将其放在上述脚本中的什么位置?还是有更简单的方法来实现此目的?如果您需要其他信息,请告诉我。

0 个答案:

没有答案