奇怪的线出现在输出中

时间:2016-02-11 09:19:38

标签: linux bash

所以我的脚本中有一行基本上是:

echo "********************"
echo "AVAILABILITY"
echo "********************"
ssh -p22 -q -o "BatchMode=yes" -o "ConnectTimeout=5" user@ipaddress echo "2>&1" && echo 'Available' || echo 'Not, available'

||的后半部分输出正常

前:

********************
AVAILABILITY
********************
Not, available

然而,上半部分输出了这个恼人的空白行:

********************
AVAILABILITY
********************

Available

我已经尝试将整条线路连接到sed和tail,并且我已经尝试在第一个回声之后插入这些并且仍然显示这个奇怪的空白行!

2 个答案:

答案 0 :(得分:1)

你的命令(简化):

ssh user@ipaddress echo "2>&1" && echo 'Available' || echo 'Not, available'

第一个echo在远程计算机上运行,​​"2>&1"将该echo命令的stderr重定向到stdout。没有参数的echo会输出换行符。然后,此换行符将作为ssh命令的stdout返回,并显示在本地shell中。如果ssh命令失败(即不可用),则远程echo命令永远不会运行,并且不会出现换行符。

答案 1 :(得分:0)

我可以使用echo -n“$(2>& 1)”

来抑制新行

感谢Josh Jolly帮助我理解为什么“空白”线出现了。