Eu tenho lutado com algo em um roteiro pessoal por um tempo agora e não estou tendo muita sorte em usar as sugestões que encontrei online. Eu percebo que esta pergunta parece virtualmente idêntica a tantos outros que já estão lá, mas mesmo olhando através de todos eles, eu ainda não estou tendo nenhuma alegria ..
Acho que a melhor maneira de fazer isso é listar o que eu tenho atualmente e trabalhar a partir daí.
Então, as partes relevantes do meu script são:
#!/bin/bash
SOURCE_FILE="$1"
cat "$SOURCE_FILE" | while read FOLDER
do
...
FOLDER_RULE=$(echo ${FOLDER} | grep -oP '\[.*\]')
FOLDER_NAME=$(echo ${FOLDER} | grep -oP '.+(?=\[.*\]')
# these output absolutely nothing:
echo FOLDER_RULE is "$FOLDER_RULE"
echo FOLDER_NAME is "$FOLDER_NAME"
...
done
A referência $SOURCE_FILE
aponta para um arquivo de texto simples com uma lista de cadeias de caracteres que eu passo para o script em tempo de execução. Alguns dados fictícios para este arquivo seriam:
Folder One [ALL]
Folder Two [LATEST]
Folder Three [FIRST]
Folder Four
Eu posso ecoar o conteúdo de $FOLDER
no meu script sem nenhum problema e essas duas $(echo ... | grep ...)
linhas funcionam perfeitamente quando eu as executo diretamente no terminal, mas dentro do meu arquivo bash eu não recebo nada.
Eu tentei estruturar o comando grep
de maneiras diferentes, referenciando as variáveis como ${...}
e "$..."
, mesmo simplesmente echo
ing a saída do comando que estou tentando capturar a saída de, mas ainda não recebo nada.
Tenho certeza de que é algo simples que estou perdendo, mas nenhuma das pesquisas que fiz me ajudou a resolvê-lo. Por favor, alguém poderia me ajudar a entender o que estou fazendo de errado aqui?