在伯恩·贝壳(Bourne Shell)中,我有以下内容:

VALUES=`some command that returns multiple line values`

echo $VALUES

好像:

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

我希望它看起来像:

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

谁能帮忙?

有帮助吗?

解决方案

echo $VALUES | tr '\n' ' '

其他提示

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

$ 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

接受的解决方案对我不起作用(在OS X优胜美地)。这就是我使用的:

echo -n $VALUES

另一个选择是使用 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'`"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top