#!/bin/bash
Q1=Hey
Q2=My
Q3=Name
Q4=Is
Q5=Bob
R=$[ ( $RANDOM % 5 ) + 1 ]
RQ1=Q${R}
echo ${!RQ1}
###############
R=$[ ( $RANDOM % 5 ) + 1 ]
RQ2=Q${R}
while [ "${!RQ2}" = "${!RQ1}" ]
do
R=$[ ( $RANDOM % 5 ) + 1 ]
RQ2=Q${R}
done
#up to here this never repeates
echo ${!RQ2}
#################
R=$[ ( $RANDOM % 5 ) + 1 ]
RQ3=Q${R}
while [[ "${!RQ3}" = "${!RQ2}" && "${!RQ3}" = "${!RQ1}" ]]
do
R=$[ ( $RANDOM % 5 ) + 1 ]
RQ3=Q${R}
done
# here is where it "failes" if i run it 2x or more it will repeat RQ1 or RQ2
echo ${!RQ3}
################
R=$[ ( $RANDOM % 5 ) + 1 ]
RQ4=Q${R}
while [[ "${!RQ3}" == "${!RQ2}" && "${!RQ3}" == "${!RQ1}" ]]
do
R=$[ ( $RANDOM % 5 ) + 1 ]
RQ4=Q${R}
done
#This repeats and I do the same for RQ5 and so on and so forth
echo ${!RQ4}
上面是我要改进的脚本。本质上,我有5个变量Q1-5,具有5个不同的值。我使用$ RANDOM来选择一个随机数,然后我将其坚持到Q的末尾,然后随机出现一个Q [1-5],然后我回显它并显示出来。很好
现在的问题是$ RANDOM具有5个重复..我每次运行它都需要5个不同的输出。但是我似乎撞墙了。我以为将变量作为字符串进行比较,如果它们匹配以再次重做$ random,则可以,但是如果我继续运行脚本,它不会给我5个不同的输出。根据我的测试,前两个回声可以正常工作……没有收到重复。但是,随着事情开始重复,前进的第三回声已经浮出水面。最终,我想将其扩展为Q [1-40],并让40个不同的回声输出不同的值。
有什么想法我要去哪里吗? while循环值得吗?如果/然后?