如何 select 最小整数 4 用于 bash 脚本文件

How do I select the smallest integer of 4 for use in bash script file

所以我 运行 遇到了这个问题。所以我得到了这四个整数

a={random integer} ; b={random integer} ; c={random integer} ; d={random integer}

我想 select 这四个中最小的那个。

我试过了,但是没有用。

(( a < b ? a : b ))

此输出以太币 1 或 2,但仅适用于 ab

我尝试过的另一件事是使用 (( a < b ? a : b )) 但也使用 (( c < d ? c : d )) 和一堆 case 语句和 if 语句,但是最终会慢很多并且文件大小密集比理论上可能的要多。

那么综上所述,我该如何选择四个整数中最小的个数?

我不知道这是否是您要找的,但是:

a=5
b=6
c=4
d=7

e=$(echo -e "$a\n$b\n$c\n$d" | sort -n | head -n 1)

如果您只想获得最小值,并且不必知道它是哪个变量,就可以正常工作。


一般来说,如果您有那么多变量需要相互比较,那么将它们放入数组中可能是一个标志。这里不一定是这种情况,但这可能表明它们在逻辑上是相关的。

bash find minimum of multiple variables(或类似的)上进行网络搜索会出现几个匹配项(例如,this, this, this),这会给您一些想法。

设置:

a=3; b=-2; c=6; d=10

一些想法:

$ printf "%s\n" $a $b $c $d | sort -n | head -1
-2

$ unset min; for i in $a $b $c $d; do [[ "$i" -le "${min:-$i}" ]] && min="$i"; done; echo $mim
-2

$ min=$a; for i in $b $c $d; do (( i<=min ? (min=i) : (min=min) )); done; echo $min
-2

$ echo $a $b $c $d | awk '{ min=; for (i=2;i<=NF;i++) min=($i<min ? $i : min); print min}'
-2

尝试

declare -i min='a<b?a:b'
min='min<c?min:c'
min='min<d?min:d'
echo "$min"