Randomizer 스크립트는 무작위화할 수 없습니다.

Randomizer 스크립트는 무작위화할 수 없습니다.

어디서 문제가 발생합니까?이 프로젝트아무것도 무작위로 지정되지 않습니다.

내 새 코드:

#!/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
}

관련 정보