Escolha uma string aleatória de alguns e defina-a como uma variável?

0

Eu tenho algumas strings e quero definir uma variável para uma delas, aleatoriamente. Digamos que as strings sejam test001 , test002 , test003 e test004 .

Se eu definir como normal eu obviamente faria assim:

test=test001

Mas eu quero que ele escolha um aleatório para as strings que eu tenho. Eu sei que poderia fazer algo assim, o que fiz anteriormente, mas foi quando escolhi um arquivo aleatório de um diretório:

test="$(printf "%s\n" "${teststrings[RANDOM % ${#teststrings[@]}]}")"

Mas, neste caso, não sei como definir testrings .

    
por DisplayName 04.11.2015 / 15:34

2 respostas

0

Você ainda pode fazer algo semelhante:

v=$(printf "test%03d" $(($RANDOM%4+1)))
v=${!v}

em que bash ${!variable} faz um nível de indireção em relação à variável real test001 etc.

Quando os nomes das variáveis podem ser qualquer coisa, por exemplo, test001 somevar anothervar, configure um array:

declare -a teststrings=(test001 somevar anothervar)
v=${teststrings[$(($RANDOM % ${#teststrings[*]}))]}
w=${!v}
echo $w
    
por 04.11.2015 / 15:46
0
array=(test001 test002 test003 test004)          
totalstr=$((${#array[@]} - 1)) # -1 because 1st string = ${array[0]} , and last one(4th) = ${array[3]
randomnum=$(($(($RANDOM % $totalstr)) + 0)) # get random number between 0 and $totalstr-1
your_random_var=$(echo ${array[$randomnum]})
    
por 04.11.2015 / 16:08

Tags