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