Ответ 1
echo $VALUES | tr '\n' ' '
В оболочке bourne у меня есть следующее:
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 Yosemite). Это то, что я использовал:
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'`"