Vamos começar com um exemplo simples de geração de nome de arquivo:
echo (xx|yy|zz)*.txt # Example 1
Isso lista todos os arquivos txt começando com xx ou yy ou zz. Agora vamos gerar essas alternativas dinamicamente usando substituição de comando; Estou usando echo
aqui apenas para ilustrar para onde estou indo; em um exemplo do "mundo real", isso certamente seria algum programa:
echo $(echo '(xx|yy|zz)')*.txt # Example 2
Isso funcionaria como acima. Agora vem a parte complicada: A substituição de comando deve fornecer apenas PARTE da lista de alternativas:
echo ($(echo 'xx|yy')|zz)*.txt # Example 3 (does not work)
Isso não funcionaria mais: encontraria arquivos começando com zz, mas não aqueles com yy. Eu acho que o Zsh está procurando por arquivos começando literalmente por xx|yy
aqui.
Podemos fazê-lo funcionar, se usarmos uma variável auxiliar:
list=$(echo 'xx|yy')
echo (${~list}|zz)*.txt # Example 4
Agora a minha pergunta:
É possível obter o efeito do exemplo 4, sem usar uma variável temporária?