Não é possível atribuir saída de comando à variável dentro do script bash [closed]

0

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?

    
por ZaLiTHkA 29.08.2017 / 08:44

1 resposta

0

Então, depois de tudo isso, o problema foi com minhas expressões regulares. Raspagem das linhas que fazer contêm [something] no final atribui valores para as variáveis conforme o esperado, enquanto as linhas que não têm essa seqüência específica no final, deixe as duas variáveis em branco. Pelo menos o lado regex eu posso consertar embora.

Minhas desculpas pela pergunta boba e um grande obrigado aos comentaristas por tentarem ajudar. Eu aprecio o seu tempo. :)

    
por 29.08.2017 / 18:13

Tags