我正在嘗試撰寫一個愚蠢的程式來隨機化文本顏色而不在 bash 中重復,我不知道如何。
#!/bin/bash
name=$1
number=$2
array1=()
for i in {1..$number}; do
random=$(($RANDOM % 6 31))
array1 =($random)
color="\033[0;${random}m"
while["${array1[*]}" =~ "${color}"]; do
random=$(($RANDOM % 6 31))
array1[$i]="$random"
done
echo -e $color$name
done
uj5u.com熱心網友回復:
如果要列印不同name的number顏色,可以使用關聯陣列來確保每個隨機顏色都是唯一的
#! /bin/bash
MAX=256
name="$1"
number="$(($2 > MAX ? MAX : $2))"
declare -A colors
while (( ${#colors[@]} < number)); do
color=$((RANDOM % MAX))
if [[ ! "${colors[$color] ?}" ]]; then
colors[$color]=1
printf '%s%s%s\n' "$(tput setaf ${color})" "${name}" "$(tput sgr0)"
fi
done
我將最大值設定為 256,但您可以使用任何數字。此外,它使用tput而不是硬編碼轉義序列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524808.html
標籤:重击
