我正在编写一个bash脚本,它需要在数组中搜索最小的可用整数并将其传递给变量.
我知道如何识别数组中的最小或最大整数,但我无法弄清楚如何识别'缺失'最小整数.
示例数组:
1
2
4
5
6
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我需要3作为变量.
使用sed这将是愚蠢的.使用GNU awk,你可以做到
array=(1 2 4 5 6)
echo "${array[@]}" | awk -v RS='\\s+' '{ a[$1] } END { for(i = 1; i in a; ++i); print i }'
Run Code Online (Sandbox Code Playgroud)
...记住所有数字,然后从1开始计算,直到找到一个不记得的数字并打印出来.然后你可以用bash记住这个数字
array=(1 2 4 5 6)
number=$(echo "${array[@]}" | awk -v RS='\\s+' '{ a[$1] } END { for(i = 1; i in a; ++i); print i }')
Run Code Online (Sandbox Code Playgroud)
但是,如果你已经在使用bash,你可以在纯粹的bash中做同样的事情:
#!/bin/bash
array=(1 2 4 5 6)
declare -a seen
for i in ${array[@]}; do
seen[$i]=1
done
for((number = 1; seen[number] == 1; ++number)); do true; done
echo $number
Run Code Online (Sandbox Code Playgroud)