Bash-如何检查是否所有数组值都大于特定数字



如何检查bash 中是否所有数组值都大于特定数字

这里有一个设计过度的答案,旨在像其他语言中的函数方法一样工作:

gt() { (( $1 > $2 )); }
all() {
local -n _ary=$1
local func=$2
shift 2
for elem in "${_ary[@]}"; do
"$func" "$elem" "$@" || return 1
done
}
array=(5 6 7 8 9 10)
if all array gt 4;  then echo true; else echo false; fi   # true
if all array gt 40; then echo true; else echo false; fi   # false

这使用了一个nameref,因此需要bash版本4.3+

#! /bin/bash
number=42
arr=(56 120 74 52 12)
all_greater=1
for element in "${arr[@]}" ; do
if (( element <= number )) ; then
all_greater=0
fi
done
if (( all_greater )) ; then
echo All values are greater.
else
echo Some values aren't greater.
fi

最新更新