Я пытаюсь сделать систему высокой оценки для игры, над которой я работаю в Bash. До сих пор я придумал систему, в которой я пишу один массив в файл, а затем просто возвращаю его обратно. В настоящее время я пытаюсь выяснить, как записать массив в файл, чтобы он легко мог использовать источник.
проблема в том, когда я Эхо мой массив в файл, он вторит" ${рекорды [@]} " буквально вместо того, что находится внутри массива рекордов. Код как следует:
#!/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
Я специально забо
echo 'highscores=( `"${highscores[@]}"` )' >> test.test
несмотря на обратные ссылки, он по-прежнему не выводит содержимое массива. Вместо этого он буквально повторяет файл:
highscores=( "${highscores[@]}" )
Если у кого-то есть более простой или ясный способ сделать это, это тоже сработает!