随机化器脚本无法随机化

随机化器脚本无法随机化

我遇到问题在哪里这个项目没有随机化任何东西。

我的新代码:

#!/bin/bash
function ReRoll(){
    sort -R languagecodes.txt > /dev/null
    sleep 0.5
    LANG=$(head -n 1 /home/pi/GT-bash-client/languagecodes.txt)
    sleep 0.1
}
INPUT=$(zenity --entry --title="Input" --text="Please enter string to be translated.")
while [[ $X -le 10 ]]
do
    ((X++))
    ReRoll
    PTRAN=$(./translate.sh auto $LANG $INPUT)
    sleep 0.1
    echo $X
    echo $PTRAN
    INPUT=$PTRAN
    
done
DONE=$(./translate.sh auto en $INPUT) 
echo $DONE

语言代码.txt:

af
sq
am
ar
hy
az
eu
be
bn
bs
bg
ca
ceb
zh-CN
zh-TW
co
hr
cs
da
nl
en
eo
et
fi
fr
fy
gl
ka
de
el
gu
ht
ha
haw
he
hi
hmn
hu
is
ig
id
ga
it
ja
jv
kn
kk
km
rw
ko
ku
ky
lo
la
lv
lt
lb
mk
mg
ms
ml
mt
mi
mr
mn
my
ne
no
ny
or
ps
fa
pl
pt
pa
ro
ru
sm
gd
sr
st
sn
sd
si
sk
sl
so
es
su
sw
sv
tl
tg
ta
tt
te
th
tr
tk
uk
ur
ug
uz
vi
cy
xh
yi
yo
zu

翻译脚本是这里。

无论如何,当我输入“Hello There, My Friend”时的输出始终是:

pi@raspberrypi:~/GT-bash-client $ sudo bash TransScrambler.sh
1
Hallo daar, my vriend!
2
Hallo daar, my vriend!
3
Hallo daar, my vriend!
4
Hallo daar, my vriend!
5
Hallo daar, my vriend!
6
Hallo daar, my vriend!
7
Hallo daar, my vriend!
8
Hallo daar, my vriend!
9
Hallo daar, my vriend!
10
Hallo daar, my vriend!
11
Hallo daar, my vriend!
Hello there, my friend!
pi@raspberrypi:~/GT-bash-client $ 

知道为什么会发生这种情况以及如何解决它吗?

答案1

您没有存储来自languagecodes.txt任何地方的打乱后的输出。您将洗牌的输出发送到/dev/null,它会永远消失。当您稍后将文件头存储到 LANG 变量中时,您只是使用原始的未打乱的文件。

将您的 ReRoll 函数更改为:

LANG=$(sort -R /home/pi/GT-bash-client/languagecodes.txt | head -1)

(不需要对sleep任何一个进行所有调用。)

答案2

您的排序调用是问题所在。 sort 命令的默认输出是 stdout。您可以使用 >/dev/null 规范调用此函数。这意味着您的脚本不会打印任何内容,而是不会重写您的语言代码文本文件。如果你想用某种随机排序重写 languagecodes.txt 文件,你必须告诉排序命令“-o 参数”。

所以你可以像这样重写你的函数:

function ReRoll(){
    sort -R languagecodes.txt -o "./languagecodes.txt" > /dev/null
    sleep 0.5
    LANG=$(head -n 1 /home/pi/GT-bash-client/languagecodes.txt)
    sleep 0.1
}

相关内容