Estou tentando montar o que eu acho que poderia ser chamado de script bash (não que minhas habilidades de script basque sejam algo para se gabar). O que eu estou tentando fazer é alimentar uma linha de um arquivo de texto - um arquivo de texto cujo conteúdo muda regularmente - para um programa que estou invocando (imagemagick). Até agora está funcionando, mas somente se houver uma única palavra ou sequência numérica no arquivo de texto - acho que estou tentando usar um for
loop, e o loop de alguma forma resulta no espaço em branco sendo tratado como quebras de linha . Assim, quando o conteúdo do arquivo excede uma palavra ou sequência numeral, em vez de o conteúdo do arquivo ser alimentado para o programa como uma linha de texto, parece que ele é alimentado com uma linha por vez e somente a última linha: praticamente uma única palavra - é incorporada no final no resultado. Não é o que eu quero.
Vou dar um exemplo usando echo, pois acho que isso será mais simples de demonstrar e entender dessa maneira. Então eu tenho um arquivo de texto, e digamos que é chamado myfile.txt
. Ele contém uma única linha com várias palavras e sequências numéricas. Pode parecer o seguinte:
'Sep 09, 2016 - 01:00 PM EDT\nconditions: mostly cloudy\n34 F\nHumidity: 39%'
As aspas simples devem receber o programa para o qual estou alimentando esse material para tratá-lo como um todo e ignorar o espaço em branco. Os \ n bits são necessários para o programa que estou alimentando, e eles funcionam nesse programa como indicadores de quebra de linha. Então, usando este exemplo com um loop for
e o comando echo, uma linha como a seguinte
for i in 'cat myfile.txt'; do echo $i; done
produz saída não
'Sep 09, 2016 - 01:00 PM EDT\nconditions: mostly cloudy\n34 F\nHumidity: 39%'
mas
'Sep
09,
2016
-
01:00
PM
EDT\nconditions:
mostly
cloudy\n34
F\nHumidity:
39%'
Pelo que estou lendo, parece que usar um loop que invoca cat não é uma maneira muito boa de realizar o que eu estou procurando, e que o loop pode ser a causa do conteúdo acabar espalhado por vários linhas ao invés de todos juntos. Então, alguém pode sugerir uma maneira de fazer isso que fará com que todas essas palavras e grupos inteiros acabem na mesma linha?
PS: O script que estou tentando criar começa com #!/bin/bash
e consiste em uma série de comandos. Ele faz o download de um arquivo de texto do qual a maior parte do conteúdo é excluída e é renomeada para myfile.txt
. Depois disso, faz o download de um mapa meteorológico e executa algumas operações nele (principalmente corte). A ideia é usar o imagemagick para justapor algum texto no mapa / imagem. Na verdade, ele já está funcionando, desde que eu não tente incluir várias palavras ou sequências inteiras divididas pelo espaço em branco. Se eu exceder uma única palavra ou sequência inteira no arquivo de texto, somente a última palavra ou sequência inteira será justaposta na imagem.