Вы хотите:
#!/bin/bash
data="`date '+%Y %m %d'`"
data2=" 7 0 0"
string="$data$data2"
awk -v str="$string" 'BEGIN {print mktime(str);exit;}'
Другой альтернативой для awk
линии: (Это имеет преимущество работы на старых awk
версий, которые не имеют возможность -v
, как Solaris 10 /usr/bin/awk
(Они, как правило, пропустить mktime
хотя))
awk "BEGIN {print mktime(\"$string\");exit;}"
Бегина блок необходим, чтобы awk
запустить код при запуске, а не для каждого входного лития северо-восток
exit
необходим, чтобы заставить его выйти, прежде чем он ждет ввода. (Это похоже на работу без него на поглазеть)
Кавычки необходимы, чтобы передать переменную в качестве одной записи ... This overview of shell quoting важно чтение для тех, кто пытается сценарии оболочки ...
Кавычки в awk
код необходимо оставить вне, чтобы получить awk, чтобы использовать переменную str
, а не строку str
.
Возможно, вы также захотите заменить обратные метки (``) на $()
, его гораздо легче читать в сложных, вложенных случаях и поддерживать во всех современных оболочках (похоже, что это может быть в стандарте POSIX, я раю 't проверен хотя ...) .. (Это не влияет на код в этом случае, хотя)
Эта одна команда может заменить ваш скрипт: 'date -d" 7:00 "+% s', предполагая, что вы имеют дату GNU. –