Вместо этого я бы сделал все это в printf
:
#!/bin/sh
header='-------------------------- SOA --------------------------'
headerLength=$(awk '{print length()}' <<<"$header")
value=$(dig soa "$1" +short | awk '{print $3}')
valueString="-----------> $value <-------------"
valueLength=$(awk '{print length()}' <<<"$valueString")
offset=$(((headerLength + valueLength)/2+1))
printf "%s\n\n%${offset}s\n" "$header" "$valueString"
Это имеет то преимущество, что всегда отображается по центру, независимо от длины вашего значения (с использованием слегка измененной версии, которая просто устанавливает value=$1
для иллюстрации):
$ foo.sh 2019072905
-------------------------- SOA --------------------------------
-----------> 2019072905 <-------------
$ foo.sh "some random long string"
-------------------------- SOA --------------------------------
-----------> some random long string <-------------
$ foo.sh "foo"
-------------------------- SOA --------------------------
-----------> foo <-------------