প্রিন্টফ কমান্ড নিয়ে বিভ্রান্তি?


13

ইকো কমান্ড ব্যবহার না করে আমাকে একটি মুদ্রণ কমান্ডে নিম্নলিখিত তিনটি লাইন প্রিন্ট করতে হবে। সুতরাং আমি প্রিন্টফ কমান্ডটি বেছে নিয়েছি e এখানে তিনটি লাইন রয়েছে:

  Different characters can be represented and supported 
  in the print command, for example: 
  x-y, X+Y, –, +, <, >, %, $, #, &.

আমি এখন পর্যন্ত যা করেছি তা হ'ল:

   printf "
   Different characters can be represented and supported 
   in the print command, for example: 
   x-y, X+Y, –, +, <, >, %, $, #, &.
   "

তবে তৃতীয় লাইনে ',' এর জন্য আমি বাশ ত্রুটি পেয়েছি।

সুতরাং যে কেউ আমাকে আলোকিত করবে।


যাইহোক, printকমান্ড কমান্ড মধ্যে একটি পার্থক্য আছে printf
ফ্লিম

উত্তর:


12

ব্যবহার করা ভাল:

printf "Different characters can be represented and supported\n\
in the print command, for example:\n\
x-y, X+Y, –, +, <, >, %%, $, #, &.\n"

অন্যরা এখানে যেমন বলেছে আপনি সেই ত্রুটিটি পেয়েছেন, কারণ %চরিত্রটির কারণে যা বিশেষ এবং এড়াতে হবে।

দেখুন man 1 printfআরও তথ্যের জন্য।


@ নারওয়েন আমি আপনাকে বিশেষ চরিত্রের সাথে খেলতে হবে এমন সময় সর্বদা লোকটিকে ব্যবহার করার পক্ষে আপনাকে সাগ্রস্ত করি। মানুষের অনুসন্ধান করতে, টাইপ করুন /your_string_to_searchএবং তারপরে এন্টার টিপুন।
রাদু রেডানু

4
পুরো বিষয়টি printfহ'ল সেই %চরিত্রটি এবং এটি কী করে!
কাজ

14

%একটি বিশেষ চরিত্র printf। ত্রুটি কারণ কি। আপনি এটি হিসাবে পালাতে হবে %%

$বাইরের শেল দ্বারা ডাবল উদ্ধৃতিতেও প্রতিস্থাপিত হতে পারে, সুতরাং আপনার ( \$) এড়াতে হবে । একক উদ্ধৃতি ব্যবহার করা সাধারণত সহজ।


5
ডলার সাইনটি শুধুমাত্র তখনই বিশেষ হয় যখন এটি বৈধ পরিবর্তনশীল নাম অনুসরণ করে যা এখানে ঘটনা নয়।
গ্লেন জ্যাকম্যান

1
$variableশেল দ্বারা প্রতিস্থাপিত হয়, দ্বারা না printf। যদি আপনি আপনার স্ট্রিংটিকে ডাবল কোটের পরিবর্তে একক উদ্ধৃতি দিয়ে ঘিরে থাকেন $তবে শেলটি দিয়ে আর বিভক্ত হবে না এবং সরাসরি চলে যাবে printf
ফ্লিম

যখন একটি বৈধ পরিবর্তনশীল নাম (থাকুক বা না থাকুক পরিবর্তনশীল আসলে নির্ধারণ করা থাকে) দ্বারা অনুসরণ বিশেষ হচ্ছে পাশাপাশি @glennjackman, $এছাড়াও বিশেষ যখন দ্বারা অনুসরণ{ বা দ্বারা বিশেষ প্যারামিটার প্রতীক , অথবা এক অথবা তার বেশি সংখ্যার । আপনি যা বলছেন তার মূল ধারণাটি যদিও সঠিক।
এলিয়াহ কাগন

9

%printf, জন্য বিশেষ: এটি বিন্যাস নির্দিষ্টকরী প্রধান গৃহস্থালির কাজ হয়। আপনি যদি আক্ষরিক শতাংশ চান, ব্যবহার করুন%%


9

এটি অবাক করে কিছু অবাক করে দেখুন যে আপনি যখন echoকমান্ডটি ব্যবহারের printfপরিবর্তে কমান্ডটি ব্যবহার করার অনুমতি দিচ্ছেন না।

না কেন cat?

#!/bin/bash

cat<<'EOF'
Different characters can be represented and supported
in the print command, for example:
x-y, X+Y, –, +, <, >, %, $, #, &.
EOF

তবে আমাকে প্রশ্ন অনুসারে প্রিন্ট কমান্ড দিয়ে প্রতিস্থাপন করতে হয়েছিল। কিন্তু সাহায্যের জন্য ধন্যবাদ।
নারওয়েন

2
$fooপাঠ্যের মতো স্ট্রিংয়ের ব্যাখ্যা এড়াতে cat <<'EOF'পরিবর্তে ব্যবহার করুন cat <<EOF
লেকেনস্টেইন

4

printfএটি একটি ফর্ম্যাট মুদ্রণ যা এর প্রথম পরামিতি হিসাবে ফর্ম্যাট স্ট্রিং নেয়। বাকী পরামিতিগুলি বিন্যাসের স্ট্রিংয়ে ব্যবহৃত হয়। তিনটি জিনিস ব্যবহার করার সময় মনে রাখতে printfহবে:

  1. যদিও অনেক ভাষায় printfস্টেটমেন্ট / কমান্ড / ফাংশন রয়েছে তবে সেগুলি কিছুটা আলাদা হয় তাই সর্বদা ভাষা নির্দিষ্ট ডকুমেন্টেশনে বিবরণ যাচাই করে (সি, ব্যাশ, পিএইচপি, পার্ল ইত্যাদি),

  2. ফর্ম্যাট স্ট্রিংটিতে আপনার ব্যবহারকারীর সরবরাহিত তথ্য কখনও ব্যবহার করা উচিত নয়। এটি সর্বদা সুরক্ষার ত্রুটি। আপনি যদি কোনও সরবরাহকারী স্ট্রিং প্রদর্শন করতে চান তবে বিন্যাসের মতো স্ট্রিংটি ব্যবহার করুন "%s"

  3. ব্যাকস্ল্যাশ ( \) এবং শতাংশ চিহ্ন ( %) উভয়ই হ'ল পালানো অক্ষর যা নীচের অক্ষরটির অর্থ পরিবর্তন করে যদি আপনি যদি নিজের আউটপুটে একটি এস্কেপ অক্ষর উপস্থিত করতে চান তবে অবশ্যই তা পালাতে হবে বা অন্য প্যারামিটার থেকে টানতে হবে। ডলার সাইন ( $) প্রিন্টফের জন্য বিশেষ নয়, তবে শেলের জন্য বিশেষ, তাই আপনার উদ্ধৃতি সম্পর্কে সতর্ক থাকুন।

printfসংখ্যার বিন্যাসের জন্য দুর্দান্ত। বিশদ জন্য ম্যান পৃষ্ঠা দেখুন


3

অন্যরা যেমন উল্লেখ করেছে, %প্রতীকটি বিশেষ printf

যদি আপনি কেবল স্ট্রিংটিকে যেমন প্রিন্ট করতে চান তবে printf %sপ্রথম যুক্তি হিসাবে দিন এবং স্ট্রিংটি চার্জকে দ্বিতীয় আর্গুমেন্ট হিসাবে একক উদ্ধৃতিতে আবদ্ধ করুন:

printf %s '
Different characters can be represented and supported 
in the printf command, for example: 
x-y, X+Y, –, +, <, >, %, $, #, &.
'

ডাবল উদ্ধৃতিগুলির পরিবর্তে একক উদ্ধৃতি ব্যবহার করা শেলটিকে আন্তঃবোলিতকরণের চিহ্নগুলি থেকে বিরত রাখে $

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.