Вы должны понять, как невероятно неэффективно звонить date
6 раз, когда вы могли бы позвонить один раз, а затем позвонить bc
+ awk
, чтобы сделать что-то, что awk
мог бы сделать один, а затем сделать ЭТО 6 раз как Что ж. Потратьте секунду, чтобы действительно подумать о том, что делает ваш скрипт.
Посмотрите на это с date
плюс любой awk:
$ awk -v dec="$(date '+%Y %m %d %H %M %S')" 'BEGIN {
split(dec,a)
hex = sprintf("%X %X %X %X %X %X",a[1],a[2],a[3],a[4],a[5],a[5])
print dec, "->", hex
}'
2019 01 05 08 22 06 -> 7E3 1 5 8 16 16
или с GNU awk для функций времени:
$ awk 'BEGIN {
dec = strftime("%Y %m %d %H %M %S")
split(dec,a)
hex = sprintf("%X %X %X %X %X %X",a[1],a[2],a[3],a[4],a[5],a[5])
print dec, "->", hex
}'
2019 01 05 08 18 54 -> 7E3 1 5 8 12 12
и вернуть результат обратно в оболочку:
$ hex=( $(awk 'BEGIN{dec=strftime("%Y %m %d %H %M %S"); split(dec,a); hex=sprintf("%X %X %X %X %X %X",a[1],a[2],a[3],a[4],a[5],a[5]); print hex}') )
$ declare -p hex
declare -a hex=([0]="7E3" [1]="1" [2]="5" [3]="8" [4]="1F" [5]="1F")