Bash: Obtendo a saída de um comando de forma programática (por exemplo, em uma variável)

Como explorar a conclusão de outro comando programaticamente?

Supondo que meu diretório atual tenha arquivosa1, a2ea3, como posso fazer meu comando chamar o preenchimento automático dels a voltara1 a2 a3?

Isso é possível?

Esclarecimento e justificativa:

Eu escolhils porque as pessoas podem se relacionar com isso. É um exemplo artificial, mas deixe-me tentar exemplificar o valor desse recurso. Eu tenho um comando chamadobuild que, dado um diretório, pode ser preenchido automaticamente com os destinos que podem ser criados nesse diretório. Esses destinos podem não corresponder aos arquivos desse diretório. Os alvos podem ser extraídos pelobuild comando de um arquivo de compilação que eu não quero analisar. Em outras palavras:

build path/to/dir/ABAABA

Pode dar:

path/to/dir/a_target
path/to/dir/b_target

build é um comando preexistente, não algo que eu possa seguir em frente e modificar para atender aos meus propósitos. E a maneira pela qual extrai suas metas é algo que certamente não quero saber.

Agora, suponha que eu tenha um repositório inteiro debuildprojetos viáveis e a maior parte do meu trabalho e, portanto, a maior parte do meubuild o trabalho acontece em apenas um projeto. Em outras palavras, eu semprebuild algum alvo sobmy/project/directory.

Por enquanto, tudo bem.

Então, eu quero escrever um wrapper em torno do comando build que não exija que eu alimente o caminho do diretório cada vez que o executo. Quero que ele conheça meu diretório de projeto preferido (ou diretórios, por que não) e deixe-me fazer referência aos destinos sem qualificá-los:

Então, sob a suposição de que eu tenho:

my/project/directory/a_target
my/project/directoryb_target

Eu quero isso:

mybuildABAABA

para me dar:

a_target
b_target

Claro que vou precisar escrever um código de conclusão paramybuild, mas quero contar com a conclusão parabuild, porque não posso simplesmente pedir aos desenvolvedores debuild codificar umbuild listtargets comando apenas para me fazer feliz. Esse recurso já está lá, na conclusão debuild, e preciso usá-lo.

(Claro, quando eu corromybuild a_target, saberá executarbuild my/project/directory/a_targete que eu sei implementar e não está no escopo desta pergunta.)

Espero que isso ilustre por que preciso aproveitar a conclusão dobuild comando e use-o como uma caixa preta.

questionAnswers(3)

yourAnswerToTheQuestion