从 Bash 中的数组元素创建 table
Make a table out of array elements in 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 %s\n' "${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 < ; i++)); do
printf '%%s '
done
printf '%%s\n'
}
printf "$(genfmt 4)" "${Var[@]}" | column -t
我想在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 %s\n' "${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 < ; i++)); do
printf '%%s '
done
printf '%%s\n'
}
printf "$(genfmt 4)" "${Var[@]}" | column -t