我对bash相当陌生,我正在尝试通过创建一些小脚本来学习它。
我创建了一个小脚本来同时查找多个域的DNS条目。域作为属性给出。
COUNTER=0
DOMAINS=()
for domain in "$@"
do
WOUT_WWW=$(dig "$domain" +short)
if (( $(grep -c . <<<"$WOUT_WWW") > 1 )); then WOUT_WWW="${WOUT_WWW##*$'\n'}" ; fi
WITH_WWW=$(dig "www.${domain}" +short)
if (( $(grep -c . <<<"$WITH_WWW") > 1 )); then WITH_WWW="${WITH_WWW##*$'\n'}" ; fi
DOMAINS[$COUNTER]="$domain|$WOUT_WWW|$WITH_WWW"
COUNTER=$(($COUNTER+1))
done
现在,我只想遍历新的“多维”数组,并给出类似于mysql表的输出:
+------------------------------+
| Row 1 | Row 2 | Row 3 |
+------------------------------+
| Value | Value | Value |
+------------------------------+
我怎样才能做到这一点?
使用perl
的Text::ASCIITable
模块(也支持多行单元格):
print_table() {
perl -MText::ASCIITable -e '
$t = Text::ASCIITable->new({drawRowLine => 1});
while (defined($c = shift @ARGV) and $c ne "--") {
push @header, $c;
$cols++
}
$t->setCols(@header);
$rows = @ARGV / $cols;
for ($i = 0; $i < $rows; $i++) {
for ($j = 0; $j < $cols; $j++) {
$cell[$i][$j] = $ARGV[$j * $rows + $i]
}
}
$t->addRow(\@cell);
print $t' -- "$@"
}
print_table Domain 'Without WWW' 'With WWW' -- \
"$@" "${WOUT_WWW[@]}" "${WITH_WWW[@]}"
凡WOUT_WWW
与WITH_WWW
阵列已经被构建为:
for domain do
WOUT_WWW+=("$(dig +short "$domain")")
WITH_WWW+=("$(dig +short "www.$domain")")
done
这使:
.---------------------------------------------------------------------.
| Domain | Without WWW | With WWW |
+-------------------+----------------+--------------------------------+
| google.com | 216.58.208.142 | 74.125.206.147 |
| | | 74.125.206.104 |
| | | 74.125.206.106 |
| | | 74.125.206.105 |
| | | 74.125.206.103 |
| | | 74.125.206.99 |
+-------------------+----------------+--------------------------------+
| stackexchange.com | 151.101.65.69 | stackexchange.com. |
| | 151.101.1.69 | 151.101.1.69 |
| | 151.101.193.69 | 151.101.193.69 |
| | 151.101.129.69 | 151.101.129.69 |
| | | 151.101.65.69 |
+-------------------+----------------+--------------------------------+
| linux.com | 151.101.193.5 | n.ssl.fastly.net. |
| | 151.101.65.5 | prod.n.ssl.us-eu.fastlylb.net. |
| | 151.101.1.5 | 151.101.61.5 |
| | 151.101.129.5 | |
'-------------------+----------------+--------------------------------'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句