从变量中删除Bourne Shell中的换行符

时间:2010-01-20 16:32:02

标签: shell scripting newline line-breaks sh

在bourne shell中,我有以下内容:

VALUES=`some command that returns multiple line values`

echo $VALUES

看起来像:

"ONE"
"TWO"
"THREE"
"FOUR"

我希望它看起来像:

"ONE" "TWO" "THREE" "FOUR"

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:43)

echo $VALUES | tr '\n' ' '

答案 1 :(得分:2)

另一种方法,如果您不想打印出代码但是将其分配给变量,并且最后没有虚假空间:

$ var=$(tail -1 /etc/passwd; tail -1 /etc/passwd)
$ echo "$var"
apache:x:48:48:Apache:/var/www:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
$ var=$(echo $var)
$ echo "$var"     
apache:x:48:48:Apache:/var/www:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin

答案 2 :(得分:1)

接受的解决方案对我不起作用(在OS X Yosemite上)。这是我用过的:

echo -n $VALUES

答案 3 :(得分:0)

另一种选择是使用xargs(虽然保留了最终换行符 - 而不是使用tr可能的尾随空格):

echo $VALUES | xargs
printf '%s\n' 1 2 3 4 5 | xargs

@yozloy:如何使用<<<

传递转义字符串
tr -d '\n' <<< "`printf '%b' 'a line with line feed \n'`"
相关问题