Расширение, если оно есть, происходит, когда вы печатаете, а не когда читаете. (Как сказал Джайлз, магия кроется в %q. Но даже echo "$var" не расширяется ). Read получает все литеральные символы в переменную, кроме обратной косой черты. Эхо голой переменной расширяется. Эхо переменной в строке "цитата" не раскрывается:
xxmetac.sh:
#!/bin/bash
read str
echo you entered:
echo $str
echo "$str"
испытание:
$ ls
file1 file2 file3
$ xxmetac.sh
*
you entered:
file1 file2 file3
*
Кроме того, большинство метасимволов оболочки не являются специальными, даже если они отображаются эхом. Вероятно, только файл -globbing:
*?[-]{,}
Не специальные:
!#@$^%()|<>
$ xxmetac.sh
>
you entered:
>
>
$ xxmetac.sh
|
you entered:
|
|
$ xxmetac.sh
@$^%()|<>
you entered:
@$^%()|<>
@$^%()|<>
Они специальные в командной строке
$ !#@$^%()|<>
@$^%()|<>
bash: syntax error near unexpected token `|'
jq '.| to_entries | map(.key,.value.scores)'
Это ответ, который я придумал, но, возможно, есть -стильный способ сделать это.