Como terminar o comando cat dentro de um script de shell

0

Eu escrevi um shell script que usa os comandos cat e tr para gerar um arquivo. Meu script de shell parece

#!/bin/bash
printf "generating random file > plaintext \n"
cat -v | tr "a-z" "b-y" < plaintext  > generatedtext 

Ao executar o script, ele não finaliza o comando cat e quando eu tiver CTRL + Z para parar a execução do script de shell. Agora, quando eu olho para o conteúdo do generatedtext - o primeiro caractere é alterado (baseado em tr ) e o resto dos caracteres são todos um e o mesmo que no texto simples.

Por exemplo, se o conteúdo de plaintext

This is an apple.

Após a execução do shell, o conteúdo de generatedtext

xhis is an apple.

    
por GIRI 12.04.2015 / 19:27

1 resposta

1

Você precisa do tr depois de ler o arquivo de texto simples:

#!/bin/bash
printf "generating random file > plaintext \n"
cat -v < plaintext | tr "a-z" "b-y" > generatedtext

Na sua pergunta plaintext é redirecionado para tr não cat . Alternativamente, você pode executar os comandos canalizados em um subshell:

#!/bin/bash
printf "generating random file > plaintext \n"
( cat -v | tr "a-z" "b-y" ) < plaintext  > generatedtext 
    
por 12.04.2015 / 19:37