Retirar linha nova da entrada canalizada

5

Estou configurando um script para trabalhar com o press-server. Isso leva a entrada canalizada ou de arquivo ( tail /var/log/messages | haste e haste < /path/to/file.txt ) e a envia para o servidor, que então gera um no meu terminal. Veja abaixo:

#!/bin/bash
url="http://hastebin.com"
key="$(curl --silent --data-binary @/dev/fd/0 $url/documents | cut -d "\"" -f 4)"
echo "$url/$key"

Funciona muito bem, no entanto, adiciona uma nova linha à entrada. Como posso ler @/dev/fd/0 para remover a linha \n new?

Editar : aqui está o meu script concluído para enviar uma pressa que apara a nova linha:

#!/usr/bin/env bash

url="http://hastebin.com"
data=$(< /dev/fd/0)
key="$(printf "%s" "$data" | curl -X POST -s --data-binary @- "$url/documents" | cut -d "\"" -f 4)"
echo "$url/$key"
    
por Brian Graham 17.02.2015 / 10:41

1 resposta

3

evitando novas linhas pelo comando 'echo'

Em vez de echo , use echo -n .

Se isso não funcionar (por exemplo, no OSX com /bin/sh como shell) ou se você quiser tornar seu script independente de qual shell ele é executado, use /bin/echo -n .

evitando novas linhas de "payload" (aqui: '$ key')

altere as novas linhas de saída com tr , por ex.     echo "$ url / $ key" | tr '\ n' '|'

    
por 17.02.2015 / 10:58

Tags