Даже с set -e
вы все равно можете:
if my_command
then
echo success
else
res=$?
case $res in
…
esac
fi
Изменить: вы также можете сделать
res=0
my_command || res=$?
case $res in
…
esac
AWK может выровнять свой вывод самостоятельно, если вы распечатываете отдельные поля вывода и используете табуляцию в качестве разделителя полей вывода:
echo a b | awk -vOFS='\t' '{ print $1, $2 }'
Вы можете получить тот же эффект для любого количества полей, если AWK перестроит $ 0
:
echo a b c d | awk -vOFS='\t' 'NF > 0 { $1 = $1 } 1'
Если вам нужен более сложный вывод, посмотрите функцию AWK printf
.
Для файла вы можете попробовать это.
[root@dcconnect ~]# column -t Host.file
.com a
.com s
.com c
.com v