如何在ssh中显示换行符

时间:2013-06-17 13:29:19

标签: linux shell newline sh

我正在尝试执行以下操作:

#!/bin/sh
ssh user@server "echo \"Test \n for newline\""

显示:

test \n for newline

如何让shell将\n解释为实际换行符?

4 个答案:

答案 0 :(得分:4)

尝试使用-e选项,例如echo -e "Test \n for newline"

如果您的echo没有-e选项,那么我会使用printf。它广泛使用,并且它的实现中几乎没有变化。

答案 1 :(得分:2)

为了获得更好的便携性,请使用printf代替echo

#!/bin/sh
ssh user@server 'printf "Test \n for newline"'

根据POSIX标准,echo应将\n作为换行符处理。除非您提供bash选项,否则echo内置-e不会。

答案 2 :(得分:1)

只需使用其中一个

#!/bin/sh
ssh user@server "echo -e \"Test \n for newline\""

#!/bin/sh
ssh user@server 'echo  -e "Test \n for newline"'

#!/bin/sh
ssh user@server "echo  -e 'Test \n for newline'"

甚至

#!/bin/sh
ssh user@server "echo 'Test 
 for newline'"

所有这些都会显示出来

Test 
 for newline

(注意第一行之后的尾随空格和第二行之前的前导空格 - 我只是复制了你的代码)

答案 3 :(得分:0)

在执行ssh命令之前,使用换行符更新IFS环境变量。

IFS='                                  
'

将ssh命令输出存储到可变的

CMD_OUTPUT=$(ssh userName@127.0.0.1 'cat /proc/meminfo')

迭代每行的输出

for s in $CMD_OUTPUT; do echo "$s"; done