سؤال

في بورن شل لدي ما يلي:

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'`"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top