Extraia dinamicamente comentários de arquivos usando cat

0

Eu tenho um monte de arquivos bash, e cada um tem uma função e um bloco de comentário que descreve essa função.

Exemplo:

~/helpers/plugins/test-util.bash

# Function Name: test_util
#
# Description: .....

function test() ....

Eu tenho uma função de ajuda que será acionada quando eu passar o parâmetro --help da minha função. A ajuda é específica para cada nome de função.

Os nomes das funções contêm _ , enquanto os nomes dos arquivos têm - . Exemplo: test-util.bash é o nome do arquivo enquanto a função que será passada será chamada test_util

O comando que eu executo se parece com:

helpers test_util --help

Isso executará a função test_util no local ~/helpers/plugins/test-util.bash

Pergunta:

Eu quero mostrar dinamicamente os comentários anexados em cada arquivo. O que eu faço é:

1- Construa o nome do arquivo correto a partir do nome da função passada usando FILENAME= echo "~/helpers/plugins/${1}.bash" | tr '_' '-' para substituir qualquer sublinhado

2- Eu extraio os comentários usando cat $FILENAME | grep '#' | cut -c 2- | tail -n +3

Agora, meu problema é com a instrução cat, já que estou passando o nome do arquivo como uma variável que eu passo para a função e não consigo fazer isso funcionar.

O comando funciona bem no terminal se eu passar o nome do arquivo diretamente para o comando cat.

Obrigado por qualquer ajuda

    
por AhmadAssaf 23.11.2016 / 19:18

1 resposta

0

Se sua tarefa realmente é

FILENAME= echo "~/helpers/plugins/${1}.bash" | tr '_' '-'

como aparece na pergunta, isso está incorreto. A forma correta é

FILENAME="$(echo "~/helpers/plugins/${1}.bash" | tr '_' '-')"

O comando como aparece na pergunta significa executar echo ... | tr ... com uma variável vazia chamada FILENAME no ambiente.

    
por 23.11.2016 / 19:46

Tags