パイプ入力から改行を削除

パイプ入力から改行を削除

私はhaste-serverで動作するようにスクリプトを設定しました。これはパイプまたはファイル入力(tail /var/log/messages | hasteおよびhaste < /path/to/file.txt)を受け取り、サーバーに送信し、私の端末にaを出力します。以下を参照してください。

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

うまくいきますが、入力に末尾の改行文字を追加します。新しい行を@/dev/fd/0削除するにはどうすればよいですか?\n

編集する:これは私のものです。完成したスクリプト切り捨て改行をコミットするための緊急作業:

#!/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"

答え1

「echo」コマンドによる改行防止

echo使用する代わりにecho -n

これがうまくいかない場合(たとえば、/bin/shOSXでシェルとして使用)、またはスクリプトが実行されているシェルに関係なく実行されるようにするには、を使用します/bin/echo -n

「ペイロード」(ここでは「$key」)に改行を使用しないでください。

trたとえば、次のように出力改行を変更します。

echo "$url/$key" | tr '\n' '|'

関連情報