В Bourne Shell у меня есть следующее:
VALUES=`some command that returns multiple line values` echo $VALUES
выглядит как:
"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):
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'`"