bash shellcheck проблема с переменными в расширении скобки

Я пытаюсь создать массив имен файлов, основанный на двух переменных и используя расширение скобки, например:

#!/bin/bash altdir=/usr arg=abc tries=({.,$altdir}/{$arg,$arg/main}.{tex,ltx,drv,dtx}) for i in "${tries[@]}"; do echo $i; done 

В последнем утверждении перечислены файлы, которые я хочу правильно:

 ./abc.tex ./abc.ltx ./abc.drv ./abc.dtx ./abc/main.tex ./abc/main.ltx ./abc/main.drv ./abc/main.dtx /usr/abc.tex /usr/abc.ltx /usr/abc.drv /usr/abc.dtx /usr/abc/main.tex /usr/abc/main.ltx /usr/abc/main.drv /usr/abc/main.dtx 

Но shellcheck говорит мне, что две переменные, altdir и arg, по-видимому, не используются:

 $ shellcheck testscript In testscript line 3: altdir=/usr ^-- SC2034: altdir appears unused. Verify it or export it. In testscript line 4: arg=abc ^-- SC2034: arg appears unused. Verify it or export it. 

Есть лучший способ сделать это?

Обходной путь может быть:

 #!/bin/bash unset altdir unset arg : "${altdir:=/usr}" : "${arg:=abc}" tries=({.,"$altdir"}/{"$arg","$arg"/main}.{tex,ltx,drv,dtx}) for i in "${tries[@]}"; do echo "$i"; done 

или сделать shellcheck игнорировать код SC2034 :

 shellcheck -e SC2034 testscript 

(И не забудьте всегда указывать свои переменные, если вам не нужен контекст списка)