You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash如何将长数组列表输出为对齐的多列格式

解决方案

你可以借助系统自带的column命令实现自动对齐的多列输出,它会自动根据终端宽度调整列数,同时适配不同长度的服务器名称,不需要手动计算排版间距。

最简实现(自动适配终端宽度)

echo "Which F5 to connect:"
for f5 in "${!nameVar[@]}"
do
    printf "%d: %s\n" "$f5" "${nameVar[$f5]}"
done | column

这个方案会自动判断当前终端能容纳的列数自动分栏,所有列内容自动对齐。

固定两列+竖线分隔(匹配预期样例)

如果需要固定为两列、带竖线分隔的效果,可以用以下实现:

echo "Which F5 to connect:"
entries=()
for f5 in "${!nameVar[@]}"
do
    entries+=("$(printf "%d: %s" "$f5" "${nameVar[$f5]}")")
done

total=${#entries[@]}
rows=$(( (total + 1) / 2 ))
for ((i=0; i<rows; i++))
do
    left=${entries[$i]}
    right=${entries[$((i + rows))]:-}
    printf "| %-20s |   %s\n" "$left" "$right"
done

输出效果和你给出的预期完全一致,不管服务器名称长短,左侧列会自动对齐到统一宽度。


内容的提问来源于stack exchange,提问作者Gergő Vadász

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:54:02