我有一个这样的数组:
array=(1 2 7 6)
Run Code Online (Sandbox Code Playgroud)
并想搜索第二大值,输出为
secondGreatest=6
Run Code Online (Sandbox Code Playgroud)
有没有办法在 bash 中做到这一点?
printf '%s\n' "${array[@]}" | sort -n | tail -2 | head -1
Run Code Online (Sandbox Code Playgroud)
将数组的每个值打印在它自己的行上,对其进行排序,获取最后 2 个值,删除最后一个值
secondGreatest=$(printf '%s\n' "${array[@]}" | sort -n | tail -2 | head -1)
Run Code Online (Sandbox Code Playgroud)
将该值设置为secondGreatest变量。
格伦·杰克曼 (Glenn Jackman) 对我没有考虑过的重复数字提出了一个很好的观点。如果您只关心唯一值,则可以使用-u排序标志:
secondGreatest=$(printf '%s\n' "${array[@]}" | sort -nu | tail -2 | head -1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4231 次 |
| 最近记录: |