বাশকে কীভাবে বলতে হবে যে পরের লাইনে রেখাটি চলতে থাকে


102

ব্যাশ স্ক্রিপ্টে আমি অন্য প্রোগ্রামার থেকে পেয়েছি, কিছু লাইন দৈর্ঘ্যে 80 টি কলাম অতিক্রম করেছে। পরের লাইনে রেখাটি অব্যাহত রয়েছে তা নির্দেশ করার জন্য লাইনে চরিত্র বা জিনিসটি কী যুক্ত করা হবে?


উত্তর:


139

চরিত্রটি একটি ব্যাকস্ল্যাশ \

থেকে ব্যাশ ম্যানুয়াল :

ব্যাকস্ল্যাশ অক্ষর '\' পরবর্তী অক্ষর পড়ার জন্য এবং লাইন ধারাবাহিকতার জন্য কোনও বিশেষ অর্থ মুছে ফেলতে ব্যবহৃত হতে পারে।


ধন্যবাদ এবং বাশ স্ক্রিপ্টের কলামগুলিতে স্বাভাবিক সীমাটি কত?
খুলুন

ব্যাশের কোনও আকর্ষণীয় কলামের সীমা নেই; স্পষ্টতার জন্য আপনার প্রতি কলামে 70-80 অক্ষর সীমাবদ্ধ করার চেষ্টা করা উচিত।
হাবি

10
@ রায়ানম ব্যাকস্ল্যাশ লাইন চরিত্রের সমাপ্তির আগে একেবারে শেষ চরিত্র হতে হবে। আপনি কি নিশ্চিত যে \ এর পরে আপনার কোনও সাদা জায়গা নেই?
জর্জ

9
@ জর্জি হ্যাঁ আরও কিছুটা মজাদার থুতু ছিটিয়ে একটি দিয়ে একটি ত্রুটি ^M। সমস্যাটি মনে হয় যে স্ক্রিপ্টটি আমাকে উইন্ডো ব্যবহার করে এমন কেউ দিয়েছিল। একটি তাড়াতাড়ি dos2unixএটি ঠিক করা হয়েছে :)
RyanM

4
@ আপনার মন্তব্যটি আমাকে সস্তার করেছে, আমার পরে a এর পরে একটি জায়গা ছিল এবং আমি কী ভুল তা বুঝতে পারি না। চিয়ার্স!
16:36

39

পরবর্তী কমান্ডটি পরবর্তী লাইনে চালিয়ে যাওয়ার জন্য আপনি সাধারণভাবে, একটি লাইনের শেষে একটি ব্যাকস্ল্যাশ ব্যবহার করতে পারেন। তবে, এমন কিছু ক্ষেত্রে রয়েছে যেখানে কমান্ডগুলি সুস্পষ্টভাবে অব্যাহত থাকে, যথা লাইনটি টোকেন দিয়ে আইনীভাবে কোনও কমান্ডকে শেষ করতে না পারার পরে শেষ হয়। সেক্ষেত্রে শেলটি জানে যে আরও আসছে, এবং ব্যাকস্ল্যাশ বাদ দেওয়া যেতে পারে। কিছু উদাহরণ:

# In general
$ echo "foo" \
> "bar"
foo bar

# Pipes
$ echo foo |
> cat
foo

# && and ||
$ echo foo &&
> echo bar
foo
bar
$ false ||
> echo bar
bar

ভিন্ন, তবে সম্পর্কিত, উদ্ধৃতিগুলির ভিতরে অন্তর্নিহিত ধারাবাহিকতা। এই ক্ষেত্রে, ব্যাকস্ল্যাশ ছাড়াই , আপনি কেবল স্ট্রিংয়ে একটি নতুন লাইন যুক্ত করছেন।

$ x="foo
> bar"
$ echo "$x"
foo
bar

ব্যাকস্ল্যাশ দিয়ে আপনি আবার লজিকাল লাইনটিকে একাধিক লজিকাল লাইনে বিভক্ত করছেন।

$ x="foo\
> bar"
$ echo "$x"
foobar

এই ধরনের পরিস্থিতিতে একটি আনুষ্ঠানিক তালিকা আছে, যেখানে একটি কমান্ড সুস্পষ্টভাবে পরবর্তী লাইনে চালিয়ে যায়? এটা তোলে যে, আমি একজন মধ্যে কিছু বিশেষ পরিস্থিতির মধ্যে ব্যাকস্ল্যাশ ছেড়ে চলে যেতে পারে আমার মনে হচ্ছে [[- ]]শর্ত, কিন্তু অন্যরা নেই, এবং আমি আউট নিয়ম চিন্তা করার চেষ্টা করছি।
মেনাচেম

16

\কাজ করে @ গিলিয়ামের উত্তর এবং @ জর্জের মন্তব্য পরিষ্কারভাবে এই প্রশ্নের উত্তর দেয়। এখানে আমি ব্যাখ্যা করছি কেন The backslash has to be the very last character before the end of line character.এই আদেশটি বিবেচনা করুন:

   মাইএসকিএল-রুট
   -হ্লোক্যালহোস্ট      

এর পরে যদি কোনও স্থান থাকে \তবে লাইন ধারাবাহিকতা কার্যকর হবে না। কারণটি হ'ল \ পরবর্তী অক্ষরের বিশেষ অর্থ সরিয়ে দেয় যা একটি স্থান যা অদৃশ্য লাইন ফিড অক্ষর নয়। লাইন ফিড অক্ষর স্থানটির পরে \এই উদাহরণে নেই।


4
"খুব শেষ চরিত্র" অংশটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ। আমি এই বাগটি হ'ল কিছুটা হতাশ হয়েছি।
জেসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.