Shell脚本中的Echo 2数组列表

时间:2016-09-14 20:51:13

标签: arrays bash shell

我在bash中遇到数组问题。我希望从转换数组中的第一个元素到最后一个元素的列表中回显2个数组。 room_minute数组也是一样。

#! /bin/bash
#! /usr/bin/perl

declare -a data;
declare -a convert;
declare -a sala_minutos;

data=($(./Minutes.php 2> /dev/null | grep -P -w -o [0-9]\{2\}\.[0-9]\{2\}\.[0-9]\{2\} | awk -v FS=/ -v OFS=/ '{print $2,$1,$3}'));

room_minutes=($(./Minutes.php 2> /dev/null | grep -oP '(?<=room: )[0-9]+'))


for ((i=0; i< ${#data[*]}; i++));
do
convert=($(date -d "${data[i]} 10:00:00" +%s));
done

echo ${convert[*]} ${room_minutes[*]}

数组中的Obs:

  

data = [09/03/16 09/01/16 09/02/16 09/03/16 09/04/16 09/05/16 09/06/16 09/07/16 09/08 / 16 09/09/16 09/10/16 09/11/16 09/12/16 09/13/16 08/25/16 08/26/16 08/27/16 08/28/16 08/29 / 16 08/30/16 08/31/16]

     

covert = [1472698800 1472785200 1472871600 1472958000 1473044400 1473130800 1473217200 1473303600 1473390000 1473476400 1473562800 1473649200 1473735600 1472094000 1472180400 1472266800 1472353200 1472439600 1472526000 1472612400]

     

room_minutes = [7339 8748 211 15 15927 7028 34 11112 12567 686 5 13988 11279 8465 4402 60 1 10380 8078 8422]

先谢谢。

2 个答案:

答案 0 :(得分:0)

我认为您希望convertroom_minutes分为两列。我使用多行字符串和paste而不是数组来尽可能少地改变。除了剥离最外面的data=之外,room_minutes=()行保持不变。

#!/bin/bash

data=$(./Minutes.php 2> /dev/null | grep -P -w -o [0-9]\{2\}\.[0-9]\{2\}\.[0-9]\{2\} | awk -v FS=/ -v OFS=/ '{print $2,$1,$3}');

room_minutes=$(./Minutes.php 2> /dev/null | grep -oP '(?<=room: )[0-9]+');

convert=$(echo "$data" | xargs -I{} date -d "{} 10:00:00" +%s)

paste <(echo "$convert") <(echo "$room_minutes")

答案 1 :(得分:0)

#!/bin/bash

data=($(./Minutes.php 2> /dev/null | grep -P -w -o [0-9]\{2\}\.[0-9]\{2\}\.[0-9]\{2\} | awk -v FS=/ -v OFS=/ '{print $2,$1,$3}'));

room_minutes=($(./Minutes.php 2> /dev/null | grep -oP '(?<=room: )[0-9]+'));

for ((i=0; i< ${#data[@]}; i++));
do
convert=($(date -d "${data[$i]} 10:00:00" +%s));
echo -e Room_Minutes ${convert[@]} ${room_minutes[$i]}
done