Удалите разрывы строк в Bourne Shell из переменной В оболочке bourne у меня есть следующее: VALUES=`some command that returns multiple line values` echo $VALUES Похож: "ONE" "TWO" "THREE" "FOUR" Я хотел бы, чтобы он выглядел так: "ONE" "TWO" "THREE" "FOUR" Может ли кто-нибудь помочь? Ответ 1 echo $VALUES | tr '\n' ' ' Ответ 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 Ответ 3 Принятое решение не сработало для меня (на OS X Yosemite). Это то, что я использовал: echo -n $VALUES Ответ 4 Другой вариант - использовать 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'`"
Ответ 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
Ответ 3 Принятое решение не сработало для меня (на OS X Yosemite). Это то, что я использовал: echo -n $VALUES
Ответ 4 Другой вариант - использовать 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'`"