2014-01-14 2 views
0

В настоящее время я пытаюсь преобразовать время GMT в эпоху Unix Epoch. Общий сценарий читается в CSV-файле, который имеет отметку времени, преобразует его, а затем добавляет время Epoch к концу строки в качестве новой переменной.Преобразование GMT ​​Time to Epoch script

Я просмотрел ряд сообщений и прочитал веб-страницу DATE http://www.linuxmanpages.com/man1/date.1.php и предположил бы, что это сработает.

#!/bin/bash 
OLDIFS=$IFS 
IFS="," 
cat test.csv | while read Host AName Resource MName TimeStamp Integer_Value; 
do 

Epoch=date -d "$TimeStamp" +%s 

echo "Host: $Host, Name: $AName, Resource: $Resourse, MName: $MName, TimeStamp: $TimeStamp, Integer_Value: $Integer_Value, Epoch: $Epoch"; 



done 

Когда запускается хотя сценарий он говорит, что -d команда не найдена Мне было интересно, если кто-то сможет помочь мне, почему это могло бы быть.

ответ

2

Чтобы сохранить значение команды в переменной, используйте синтаксис var=$(command). В вашем случае:

Epoch=$(date -d "$TimeStamp" +%s) 

Кроме того, ваш синтаксис cat file | while read... может быть упрощена до while do ... done < file:

IFS="," while read Host AName Resource MName TimeStamp Integer_Value; 
do 
... 
done < test.csv 
+0

Привет Fedorqui Благодарим за помощь но я понял это. Я надеялся, что вы сможете быстро взглянуть, http: //stackoverflow.com/questions/21116795/unexpect-new-line-when-write-out-in-unix-shell-script – QuinsUK

2

Вы должны написать

Epoch=`date -d "$TimeStamp" +%s` 

или

Epoch=$(date -d "$TimeStamp" +%s)