Input de string via Script [RESOLVIDO]

1. Input de string via Script [RESOLVIDO]

marcos abilio dos santos
W3rewolf

(usa Outra)

Enviado em 15/10/2020 - 08:28h

Bom dia pessoal,

Estudo Linux por conta já tem um tempo (em breve tento a LPI 101, só tá faltando o tio Sam ajudar), porém ainda não cheguei na parte de Shell (é a prova 2 né).
Estou querendo automatizar uma tarefa que faço manualmente no trabalho mas não sei como fazer o Input, o trecho com problema é este:

echo "Entre com conteúdo do arquivo: "
read CRT
echo $CRT > $USER.crt

O input é um texto de varias linhas, quando colo no terminal, só é considerada a primeira linha e o script segue, até encontrei algumas coisas a respeito na internet mas não entendi
como fazer. Talvez me falte experiência, basicamente o que eu quero é pegar um texto pelo input do usuário e mandar pra um arquivo. Fico no aguardo, obrigado.


  


2. Re: Input de string via Script

nemu
nemuri

(usa Outra)

Enviado em 15/10/2020 - 11:15h

Como consultor de brincadeira, a gente tem que analisar o caso,
descobrir o que realmente é o problema e depois, o mais difícil,
convencer o cliente porque ele não vai querer ouvir.

No seu caso, string geralmente é de tamanho de uma linha, se
não me engano nas terminologias mais comuns.
Você quer inserir um texto mesmo.

O read lê linha por linha, você já deve ter reparado que no UNIX
muitos programas trabalham linha por linha.

O read é para input simples. Quando vc entra no read, ele basicamente
não tem nenhuma capacidade de edição de caracters, nem o editor
de linha do bash, o readline, é usado, então o cara tem que usar algo
mais robusto.

Uma solução seria o uso do pacote `vipe`, que vem no pacote
`moreutils`.
O vipe pega input vindo de um pipe e abre para edição de texto
e depois da edição, o usuário salva o arquivo e o vipe vai
mandar o conteúdo para o stdout..

$ EDITOR=gedit
$ VISUAL=gedit
$ echo "este texto vai aparecer no ed de texto" | vipe | cat

Em alguns ambientes, interface gráfica não funciona então é bom vc definir
$EDITOR e $VISUAL para vim ou nano.. Se vc não setar automaticamente,
o vipe vai tentar ler essas vars do ambiente do usuário, que devem estar
configuradas de acordo com a preferência do usuário.

Para uma solução com mais shell:


#!/bin/bash

#cria arq temp
TMP="$(mktemp)" || exit 1

echo "este texto vai aparecer no editor de texto" > "$TMP"

vim "$TMP"

cat "$TMP" | [pipeline]..

#limpeza
rm "$TMP"


Ou copie e cole as funções desse script no seu e use-as:
https://github.com/0mp/vipe.sh/blob/master/vipe.sh


3. Re: Input de string via Script [RESOLVIDO]

marcos abilio dos santos
W3rewolf

(usa Outra)

Enviado em 19/10/2020 - 17:10h

Realmente o que queria era a edição de um texto, não um string kkk
Bem, seu código me atendeu 100% Obrigado!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts