স্ট্রিংয়ে ব্যাশ ভেরিয়েবলের পরে স্থান কীভাবে এড়ানো যায়?


17

আমি রঙের জন্য একটি পরিবর্তনশীল আছে। আমি স্ট্রিংয়ের ভিতরে এটি মূল্যায়ন করে স্ট্রিংগুলিতে রঙ সেট করতে ব্যবহার করি। যাইহোক, নামের পরে আমাকে স্থান অন্তর্ভুক্ত করতে হবে (যাতে নামেরটিতে পাঠ্যের অংশ না থাকে)। এটি কখনও কখনও খারাপ দেখায়।

আমি কীভাবে এই স্থান (মুদ্রণ) ব্যবহার এড়াতে পারি?

উদাহরণ (এটি বলা যাক Red=1এবং NC=2):

echo -e "$Red Note: blabla$NC".

আউটপুট:

1 Note: blabla2.

প্রত্যাশিত আউটপুট:

1Note: blabla2.

উত্তর:


28

কেবল ধনুর্বন্ধনী মধ্যে পরিবর্তনশীল বদ্ধ:

echo -e "${Red}Note: blabla${NC}".

প্যারামিটার সম্প্রসারণ সম্পর্কে আরও বিশদ দেখুন ।

এছাড়াও দুর্দান্ত উত্তর দেখুন প্রিন্টফ প্রতিধ্বনির চেয়ে কেন ভাল? যদি আপনি বহনযোগ্যতা সম্পর্কে যত্নশীল।


4

আপনার ব্যবহারের অভ্যাসটি কী হওয়া উচিত তা হ'ল প্রিন্টফ:

printf '%sNote: blabla%s\n' "$Red" "$NC"

যেখানে প্রতিটি %s একটি পরিবর্তনশীল প্রতিস্থাপন। এবং -eপ্রিন্টফের কোনও পোর্টেবল পদ্ধতিতে ব্যাকস্ল্যাশ মানগুলি \ n, \ t, ইত্যাদি গ্রহণ করার কারণে এটির দরকার নেই।

মনে রাখবেন যে echo -eএটি অন্যান্য শেলের কাছে পোর্টেবল নয়।

অন্যান্য অপশন:

আপনি দুটি কমান্ড ব্যবহার করতে পারেন যা তাদের আউটপুটকে একত্রিত করে:

echo -ne "$Red"; echo -e "Note: blabla$NC"

আপনি সাধারণ স্ট্রিং সংক্ষেপণ ব্যবহার করতে পারেন:

echo -e "$Red""Note: blabla$NC"

অথবা আপনি { }নাম-পাঠ্য বিভ্রান্তি এড়াতে ব্যবহার করতে পারেন :

echo -e "${Red}Note: blabla$NC"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.