用Bash中的数组元素制作表格
我想在 BASH 脚本中实现以下功能
当前代码
#!/bin/bash
Var=()
Var=(Title Album Song Rating 1 2 3 4 5 6 7 8 9 10 11 12 13)
echo " ${Var[@]}"
输出:
Title Album Song Rating 1 2 3 4 5 6 7 8 9 10 11 12 13
但是我想要实现的是在每 4 个元素之后并在相等的列中换行。
Title Album Song Rating
1 2 3 4
5 6 7 8
10 11 12 13
回答
使用printf打印每行四个元素,然后用对齐列column。
$ Var=(Title Album Song Rating 1 2 3 4 5 6 7 8 9 10 11 12)
$ printf '%s %s %s %sn' "${Var[@]}" | column -t
Title Album Song Rating
1 2 3 4
5 6 7 8
9 10 11 12
printf如果列数是动态的,您还可以使用一个简单的函数来生成格式字符串。
genfmt() {
for ((i = 1; i < $1; i++)); do
printf '%%s '
done
printf '%%sn'
}
printf "$(genfmt 4)" "${Var[@]}" | column -t