从管道输入中去除换行符

Bri*_*ham 7 bash readline

我一直在设置一个脚本来处理快速服务器。这需要管道或文件输入(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"
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是它在输入中添加了一个尾随的新行。如何阅读@/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"
Run Code Online (Sandbox Code Playgroud)

vil*_*age 4

通过“echo”命令避免换行

而不是echo使用echo -n.

如果这不起作用(例如,在带有/bin/shas shell 的 OSX 上),或者如果您想让脚本独立于它在哪个 shell 下运行,请使用/bin/echo -n .

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

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

echo "$url/$key" | tr '\n' '|'
Run Code Online (Sandbox Code Playgroud)

  • 如果你真的想让它可移植,请使用“printf”;有关详细信息,请参阅 https://unix.stackexchange.com/questions/65803/why-is-printf-better-than-echo。 (3认同)