Один из способов :создать параллельный массив с соответствующими шансами в процентах; ниже я масштабировал их до 1000. Затем выберите случайное число от 1 до 1000 и перебирайте массив, пока не закончатся все шансы:
#!/bin/bash
array=( "foo" "bar" "baz")
chances=(733 266 1)
choice=$((1 + (RANDOM % 1000)))
value=
for((index=0; index < ${#array[@]}; index++))
do
choice=$((choice - ${chances[index]}))
if [[ choice -le 0 ]]
then
value=${array[index]}
break
fi
done
[[ index -eq ${#array[@]} ]] && value=${array[index]}
printf '%s\n' "$value"
Я решил эту проблему, скопировав /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.4
, установленный на другом компьютере с моей версией Ubuntu, и создав символическую ссылку libzstd.so.1
на libzstd.so.1.4.4
в том же каталоге /usr/lib/x86_64-linux-gnu/
.