1 arrays bash associative max maxlength
在 Bash 中,给定一个关联数组,如何找到最长键的长度?
比如说,我声明myArray如下:
$ declare -A myArray=([zero]=nothing [one]='just one' [multiple]='many many')
$ echo ${myArray[zero]}
nothing
$ echo ${myArray[one]}
just one
$ echo ${myArray[multiple]}
many many
$
Run Code Online (Sandbox Code Playgroud)
我可以使用下面的一行得到它
$ vSpacePad=`for keys in "${!myArray[@]}"; do echo $keys; done | awk '{print length, $0}' | sort -nr | head -1 | awk '{print $1}'`;
$ echo $vSpacePad
8
$
Run Code Online (Sandbox Code Playgroud)
我正在寻找像下面这样更简单的东西,但不幸的是,这些只是给出了数组中的项目数。
$ echo "${#myArray[@]}"
3
$ echo "${#myArray[*]}"
3
Run Code Online (Sandbox Code Playgroud)
您确实需要循环按键,但不需要任何外部工具:
max=-1
for key in "${!myArray[@]}"; do
len=${#key}
((len > max)) && max=$len
done
echo $max # => 8
Run Code Online (Sandbox Code Playgroud)
如果您想每行打印一个数组的元素,则不需要循环:printf是您的朋友吗:
printf '%s\n' "${!myArray[@]}"
Run Code Online (Sandbox Code Playgroud)
printf迭代直到消耗完所有参数
| 归档时间: |
|
| 查看次数: |
992 次 |
| 最近记录: |