从管道输入中去除换行符

从管道输入中去除换行符

我一直在设置一个脚本来与 haste-server 一起使用。这需要管道或文件输入(tail /var/log/messages | hastehaste < /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/shas shell 的 OSX 上),或者如果您想让脚本独立于它在哪个 shell 下运行,请使用/bin/echo -n.

避免“有效负载”中的换行符(此处:“$key”)

使用 更改输出换行符tr,例如

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

相关内容