Your first line:
var=$(find script*)
is just making var a single string variable with all of script* in it. It's not an array, so we can't index into it with [] like you want.
The script* is actually expanded by the shell, so find isn't doing anything there (unless they're directories, which it doesn't look like they are) — it just gets all the filenames as arguments, checks they exist, and prints them straight back out again. The shell actually does all the work..
Instead, we can make an array, and we can use the shell's glob expansion directly to populate it:
files=(script*)
When we put the initialiser (the right-hand side of the =) in parentheses we're making an array, which holds multiple values separately. script* will expand to every filename starting with script in the current directory. If there are spaces in the filenames they won't cause the words to be split up the way they would be with commands (backticks or $()) inside the array initialiser.
At this point we can read in some user input:
select SEL in "${files[@]}"
do
if ! [ "$SEL" ]
then
echo "Choose one of the available files."
continue
fi
echo "$SEL will start"
"./$SEL"
break
done
We write "${files[@]}" to expand our entire array of filenames cleanly to give to select. The user will be offered a choice of files, and then we enter the do...done block.
If $SEL is empty, the user chose a non-existent entry, so we print the prompt and continue so they're asked to choose again.
Otherwise, we echo the notification that the script will start and run the script. We quote the name "./$SEL" in case the script name has spaces in it, which would otherwise cause the command name to be treated as ./firstword, with the remaining words as arguments. break stops us going back around and asking the user again; if you want to do that, take it out.
The case...of you were using doesn't seem to have much effect in the example you give, but if you do have some separate behaviour depending on the script chosen (and it has to be in this script), you can put that inside the do...done block.
find script*doesn't make sense: it lists files matchingscript*in the current directory, and if any of these is a subdirectory, its contents is listed recursively. Did you mean to use files matchingscript*directly in the current directory? Or files with matching names in the current directory or its subdirectories and so on recursively?