Discussion:
[shell-script] Dados de entrada
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-03-24 15:25:10 UTC
Permalink
Fala pessoal,
eu pegava os dados que recebia da entrada primária (via | ou <) da seguinte
maneira:

Parms=$(cat -)
set $Parms
echo $1:$2:$3

Experimente colocar essas 3 linhas dentro de leprimaria.sh e executá-lo da
seguinte maneira:

echo A B C | leprimaria.sh

Viu, funcionou beleza! Porém se vc não passar nenhum parâmetro ele trava,
pois fica tentando ler a entrada primária, onde não tem nada.

Demorei anos para consertar isso, pq não me ocorreu de usar a opção -t do
cmd test que testa se um arquivo com um determinado descritor (FD - file
descriptor) está aberto. Aí ficou fácil e fiz um bacalho para mostrar para
vcs, aproveitando para apresentar para muitos o utilitário xclip. Só para
vc ter uma ideia o Shell trabalha com 3 áreas de transferências (pesquisem)
mas o meu bacalho usa somente o clipboard (que vc verá no código onde
escrevo xclip -selection c, mas que poderia ser ser p ou s).

Abaixo o código:
==================================================
#!/bin/bash

# Este programa lê dados de um arquivo ou da entrada
#+ primária e os carrega para a área de transferência

if ! [[ -t 0 ]] # Testa se o file descriptor 0 (entrada
#+ primária) está aberto no terminal
then
echo -n "$(< /dev/stdin)" |
xclip -selection c && \
echo "Copiado para a área de transferência"
else
if [[ -z "$@" ]] # Se não recebeu nenhum parâmetro
then
echo " Uso:
$0 <ARQUIVO> - Copia ARQUIVO p/ área de transferência
Exemplo: $0 /caminho/do/arquivo

COMANDO | $0 - Copia saída de COMANDO p/ área de transf.
Exemplo: echo A B C | $0

Um <CTRL>+V exibirá o conteúdo copiado"
exit 1
fi
# Então parâmetro passado foi um arquivo.
if [[ ! -f "$@" ]]
then
echo Arquivo $@ não existe
exit 1
else
xclip -i -selection clipboard "$@"
echo " Arquivo "$@" copiado para área de transf."
fi
fi
==================================================

Se descobrirem algum furo, p. favor, avisem.

Abcs,
Julio
​​

*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico

Loading...