বাশে, এটি চেষ্টা করে দেখুন:
echo -e "hello\nworld"
তবে এটি কেবল একটি নতুন লাইন মুদ্রণ করে না \n
। আমি কীভাবে এটি নতুন লাইনে মুদ্রণ করতে পারি?
আমি উবুন্টু 11.04 ব্যবহার করছি।
বাশে, এটি চেষ্টা করে দেখুন:
echo -e "hello\nworld"
তবে এটি কেবল একটি নতুন লাইন মুদ্রণ করে না \n
। আমি কীভাবে এটি নতুন লাইনে মুদ্রণ করতে পারি?
আমি উবুন্টু 11.04 ব্যবহার করছি।
উত্তর:
printf
পরিবর্তে আপনি ব্যবহার করতে পারেন :
printf "hello\nworld\n"
printf
তুলনায় আরও সুসংগত আচরণ আছে echo
। এর আচরণ echo
বিভিন্ন সংস্করণের মধ্যে বিস্তরভাবে পরিবর্তিত হয়।
printf %"s\n" hello world
- অনেক বেশি যুক্তি দেওয়া থাকলে
echo
সমর্থন করার ক্ষেত্রে এটি ফিট করে -e
।
echo
, -e
কেবলমাত্র আউটপুটেই মুদ্রিত হয় তাই আমি মনে করি যে এই উত্তরটি এখানে যথাযথ নয় কারণ echo
এখানে সামঞ্জস্যপূর্ণ নয় (যদি না আমরা একটি নির্দিষ্ট সংস্করণের কথা বলি)।
আপনি কি নিশ্চিত যে আপনি ব্যাশে আছেন? চারটি উপায়ে আমার জন্য কাজ করে:
echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world
echo Hello ; echo world
-e
সমস্ত * নিক্স ওএসে
echo $'hello\nworld'
কপি করে প্রিন্ট
hello
world
$''
স্ট্রিংগুলি এএনএসআই সি উদ্ধৃতি ব্যবহার করে :
ফর্মের শব্দগুলি বিশেষভাবে চিকিত্সা করা হয়। শব্দটি স্ট্রিংয়ে প্রসারিত হয় , এএনএসআই সি স্ট্যান্ডার্ড অনুসারে ব্যাকস্ল্যাশ-পলায়নযুক্ত অক্ষর প্রতিস্থাপন করা হয়েছিল।
$'string'
আপনি সবসময় করতে পারে echo ""
।
যেমন
echo "Hello"
echo ""
echo "World"
echo ""
আমার জন্য কাজ করে এবং আমি মনে করি এটি একটি নতুন লাইন মুদ্রণের সবচেয়ে সহজ ফর্ম, এমনকি যদি এটি সরাসরি প্রশ্নের উত্তর না দেয়। চিয়ার্স।
echo -en "\n"
।
echo
খালি লাইনটি পাওয়ার জন্য যথেষ্ট
চেষ্টা
echo -e "hello\nworld"
hello
world
nano
সম্পাদক হিসাবে আমার জন্য কাজ ।
ম্যান পৃষ্ঠা থেকে:
-e
ব্যাকস্ল্যাশ পলায়নের ব্যাখ্যা সক্ষম করুন
কোনও সহকর্মীর স্ক্রিপ্ট কেন নিউলাইনগুলি মুদ্রণ করবে না, তা জানার চেষ্টা করে যে কেউ প্রাচীরের বিরুদ্ধে মাথা ঠাপাচ্ছে এই সুযোগটি এই ক্ষেত্রে দেখুন ->
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
echo $(GET_RECORDS);
উপরের মত, পদ্ধতিটির প্রকৃত চলমানটি নিজেই একটি প্রতিধ্বনিতে আবৃত থাকতে পারে যা পদ্ধতিতে থাকা কোনও প্রতিধ্বনিকে ছাড়িয়ে যায়। স্পষ্টতই আমি ব্রেভটির জন্য এটিকে জল দিয়েছি, এটি সন্ধান করা এত সহজ ছিল না!
তারপরে আপনি আপনার কমরেডদের অবহিত করতে পারেন যে ফাংশনগুলি সম্পাদন করার জন্য আরও ভাল উপায় এটি হতে পারে:
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
GET_RECORDS;
এটি রাস্পবিয়ান ভাষায় আমার পক্ষে কাজ করে,
echo -e "hello\\nworld"
প্রতিধ্বনিতে পজিক্স 7
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
সংজ্ঞায়িত হয় না এবং ব্যাকস্ল্যাশগুলি বাস্তবায়ন সংজ্ঞায়িত হয়:
যদি প্রথম অপারেন্ডটি -n হয়, বা যদি কোনও অপারেন্ডে <ব্যাকস্ল্যাশ> অক্ষর থাকে তবে ফলাফলগুলি বাস্তবায়ন-সংজ্ঞায়িত হয়।
আপনার যদি কোনও Xচ্ছিক এক্সএসআই এক্সটেনশন না থাকে।
সুতরাং আমি আপনাকে পরামর্শ দিচ্ছি যে printf
পরিবর্তে আপনার ব্যবহার করা উচিত , যা ভালভাবে নির্দিষ্ট করা হয়েছে:
XBD ফাইল ফর্ম্যাট নোটেশন বর্ণিত বিন্যাস স্ট্রিং হিসাবে ফর্ম্যাট অপারেন্ড ব্যবহার করা হবে [...]
। n <নিউলাইন> মুদ্রণ অবস্থানটি পরবর্তী লাইনের শুরুতে সরান।
এছাড়াও মনে রাখবেন যে উবুন্টু 15.10 এবং বেশিরভাগ ডিস্ট্রো echo
উভয় হিসাবে প্রয়োগ করে:
help echo
which echo
যা কিছু বিভ্রান্তির কারণ হতে পারে।
কেবল টাইপ করুন
echo
একটি নতুন লাইন পেতে
str='hello\nworld'
$ echo | sed "i$str"
hello
world
এটি সেন্টোসে আমার জন্য কাজ করে:
echo -e ""hello\nworld""
আপনি এটি করতে পারেন:
echo "hello
world"
এটি স্ক্রিপ্টের ভিতরে এবং কমান্ড লাইন থেকে উভয়ই কাজ করে।
কমান্ড লাইনে, Shift+ টিপুনEnter স্ট্রিংয়ের ভিতরে লাইনটি বিরতি করতে ।
এটি আমার ম্যাকোস এবং আমার উবুন্টু 18.04 এ আমার জন্য কাজ করে
তাদের জন্য এখানে আরও একটি এন্ট্রি যা এই কোনও সমাধানের সাথে এটি কাজ করে না, এবং তাদের ফাংশন থেকে কোনও ফেরতের মান পাওয়া দরকার:
function foo()
{
local v="Dimi";
local s="";
.....
s+="Some message here $v $1\n"
.....
echo $s
}
r=$(foo "my message");
echo -e $r;
এই কৌশলটি একটি লিনাক্সে কাজ করেছিল আমি এই ব্যাশের সাথে কাজ করছি:
GNU bash, version 2.2.25(1)-release (x86_64-redhat-linux-gnu)
আশা করি এটি একই ধরণের সমস্যার সাথে কাউকে সহায়তা করবে।
আমার লিপি:
echo "WARNINGS: $warningsFound WARNINGS FOUND:\n$warningStrings
আউটপুট:
WARNING : 2 WARNINGS FOUND:\nWarning, found the following local orphaned signature file:
আমার বাশ স্ক্রিপ্টে আমি যতক্ষণ না চেষ্টা করেছি ততক্ষণ আমি তোমার মতো পাগল হয়ে যাচ্ছিলাম:
echo "WARNING : $warningsFound WARNINGS FOUND:
$warningStrings"
আপনি যে লাফটি sertোকাতে চান সেখানে কেবল প্রবেশ করুন hit আউটপুট এখন:
WARNING : 2 WARNINGS FOUND:
Warning, found the following local orphaned signature file:
আপনি বন্ধনী দ্বারা প্রতিধ্বনি ব্যবহার করতে পারেন,
$ (echo hello; echo world)
hello
world
echo hello; echo world
এটি আরও ভাল হিসাবে করা যেতে পারে
x="\n"
echo -ne $x
-e বিকল্পটি এস্কেপ সিকোয়েন্সের জন্য ব্যাকস্ল্যাশগুলি ব্যাখ্যা করবে
- এন বিকল্পটি আউটপুটটিতে ট্রেলিং করা নতুন লাইনটি সরিয়ে ফেলবে
পিএস: কমান্ড প্রতিধ্বনির ফলাফল সর্বদা আউটপুটে একটি ট্রেলিং নিউলাইন অন্তর্ভুক্ত করে তাই -নাকে সেই জিনিসটি বন্ধ করতে হবে (এবং এটিকে কম বিভ্রান্ত করা উচিত)
এস্কেপ সিকোয়েন্সকে ব্যাখ্যা করে একটি নতুন প্যারামিটার সম্প্রসারণ যুক্ত হয়েছে bash 4.4
:
${parameter@operator} - E operator
বর্ধন এমন একটি স্ট্রিং যা
$'…'
উদ্ধৃতি ব্যবস্থার সাথে বিস্তৃত ব্যাকস্ল্যাশ পালানোর ক্রমগুলির সাথে পরামিতির মান ।
$ foo='hello\nworld'
$ echo "${foo@E}"
hello
world
আপনি যদি স্ক্রিপ্টগুলি লিখছেন এবং অন্যান্য বার্তাগুলির অংশ হিসাবে নতুন বারে প্রতিধ্বনিত হয়ে যাচ্ছেন তবে একটি দুর্দান্ত ক্রস-প্ল্যাটফর্ম সমাধান হ'ল আক্ষরিক নিউলাইনটি এর মতো ভেরিয়েবলে রাখলে:
newline='
'
echo "first line$newlinesecond line"
echo "Error: example error message n${newline}${usage}" >&2 #requires usage to be defined
কখনও কখনও আপনি একটি স্পেস দ্বারা পৃথক একাধিক স্ট্রিং পাস করতে পারেন এবং এটি হিসাবে ব্যাখ্যা করা হবে \n
।
উদাহরণস্বরূপ মাল্টি-লাইন বিজ্ঞপ্তির জন্য শেল স্ক্রিপ্ট ব্যবহার করার সময়:
#!/bin/bash
notify-send 'notification success' 'another line' 'time now '`date +"%s"`
\n
। এটি প্রোগ্রামটির পৃথক যুক্তি হিসাবে ব্যাখ্যা করা হয় এবং প্রোগ্রাম নিজেই সেই যুক্তিটি একটি নতুন লাইনে প্রদর্শিত করতে পারে তবে এর অর্থ এই নয় যে এটি \n
কোনও পর্যায়ে রূপান্তরিত হয়েছিল এবং পুরোপুরি প্রোগ্রামের উপর নির্ভরশীল।
এটি আমাকে সেখানে পেয়েছে ...
outstuff=RESOURCE_GROUP=[$RESOURCE_GROUP]\\nAKS_CLUSTER_NAME=[$AKS_CLUSTER_NAME]\\nREGION_NAME=[$REGION_NAME]\\nVERSION=[$VERSION]\\nSUBNET-ID=[$SUBNET_ID]
printf $outstuff
উৎপাদনের:
RESOURCE_GROUP=[akswork-rg]
AKS_CLUSTER_NAME=[aksworkshop-804]
REGION_NAME=[eastus]
VERSION=[1.16.7]
SUBNET-ID=[/subscriptions/{subidhere}/resourceGroups/makeakswork-rg/providers/Microsoft.Network/virtualNetworks/aks-vnet/subnets/aks-subnet]
অতিরিক্ত সমাধান:
ক্ষেত্রে, আপনাকে দীর্ঘ সামগ্রীর একাধিক প্রতিধ্বনি করতে হবে (যেমন কোড / কনফিগারেশন)
উদাহরণ স্বরূপ :
echo -e
,
printf
কিছুটা সীমাবদ্ধতা থাকতে পারে
লাইন ব্রেক (যেমন ~
) হিসাবে স্থানধারক হিসাবে আপনি কিছু বিশেষ চর ব্যবহার করতে পারেন এবং ফাইলটি তৈরির পরে এটি ব্যবহার করে প্রতিস্থাপন করতে পারেনtr
echo ${content} | tr '~' '\n' > $targetFile
এটির জন্য অন্য একটি প্রোগ্রাম শুরু করতে হবে ( tr
) যা ভাল আইএমও হওয়া উচিত।