Estou tentando criar um sistema de pontuação alta para um jogo em que estou trabalhando no Bash. Até agora, o que eu criei é um sistema em que eu escrevo uma única matriz em um arquivo e depois apenas a refiro depois. Atualmente, estou tentando descobrir como gravar a matriz no arquivo, de modo que seja facilmente capaz de fonte.
O problema é que, quando eu ecoo minha matriz no arquivo, ela ecoa os "$ {highscores [@]}" literalmente, em vez do que está dentro da matriz de recordes. O código é o seguinte:
#!/bin/bash
#TODO Input an array from a file, read input from user, test if it's larger than any of the top 10, add it in there accordingly.
#TODO Make it handle multiple high scores.
num=0
read -rp "enter score: " score
if [ -f test.test ]; then
. test.test
for i in "{highscores[@]}"; do
if [[ $score > $i ]]; then
num=$((num+1))
IFS=$'\n' highscores=($(sort <<<"${highscores[*]}"))
highscores[$num]="$score"
rm test.test #probably not best way of doing this
echo 'highscores=( `"${highscores[@]}"` )' >> test.test
else
highscores+=("$score")
fi
done
else
highscores=( "$score" )
echo 'highscores=( `"${highscores[@]}"` )' >> test.test
fi
A parte que eu estou especificamente interessada
echo 'highscores=( `"${highscores[@]}"` )' >> test.test
Apesar dos backticks, ele ainda não imprime o conteúdo da matriz. Em vez disso, o que ecoa no arquivo é literalmente:
highscores=( "${highscores[@]}" )
Se alguém tiver uma maneira mais fácil ou clara de fazer isso, também funcionaria!