Ваша переменная(files_to_scp
)содержит буквальную строку "{aaa,bbb}*_list.txt"
, НЕ расширение всех соответствующих файлов. bash не раскрывает фигурные скобки при присвоении скалярной переменной.
bash расширяет их для массивов. Вместо этого используйте массив.
напр.
files_to_scp=( {aaa,bbb}*_list.txt )
scp "${files_to_scp[@]}" user@host:.
Вот (упрощенный, практический )пример и объяснение, показывающее, что происходит:
Я создал кучу файлов, соответствующих вашему шаблону
$ mkdir spike
$ cd spike
$ touch {aaa,bbb}{01..10}_list.txt
$ ls
aaa01_list.txt aaa05_list.txt aaa09_list.txt bbb03_list.txt bbb07_list.txt
aaa02_list.txt aaa06_list.txt aaa10_list.txt bbb04_list.txt bbb08_list.txt
aaa03_list.txt aaa07_list.txt bbb01_list.txt bbb05_list.txt bbb09_list.txt
aaa04_list.txt aaa08_list.txt bbb02_list.txt bbb06_list.txt bbb10_list.txt
ваше назначение переменной сохраняет литеральную строку:
$ files_to_scp="{aaa,bbb}*_list.txt"
$ declare -p files_to_scp
declare -- files_to_scp="{aaa,bbb}*_list.txt"
и bash делает то же самое без кавычек:
$ files_to_scp={aaa,bbb}*_list.txt
$ declare -p files_to_scp
declare -- files_to_scp="{aaa,bbb}*_list.txt"
при использовании массива каждое совпадающее имя файла сохраняется как элемент массива.
$ files_to_scp=( {aaa,bbb}*_list.txt )
$ declare -p files_to_scp
declare -a files_to_scp=([0]="aaa01_list.txt" [1]="aaa02_list.txt" [2]="aaa03_list.txt" [3]="aaa04_list.txt" [4]="aaa05_list.txt" [5]="aaa06_list.txt" [6]="aaa07_list.txt" [7]="aaa08_list.txt" [8]="aaa09_list.txt" [9]="aaa10_list.txt" [10]="bbb01_list.txt" [11]="bbb02_list.txt" [12]="bbb03_list.txt" [13]="bbb04_list.txt" [14]="bbb05_list.txt" [15]="bbb06_list.txt" [16]="bbb07_list.txt" [17]="bbb08_list.txt" [18]="bbb09_list.txt" [19]="bbb10_list.txt")