আমি কীভাবে ডলার চিহ্নগুলি প্রতিধ্বনি করতে পারি?


67

উদাহরণস্বরূপ, $PATHএবং$HOME

আমি যখন টাইপ echo $PATHকরি তখন এটি আমার ফেরত দেয় $PATHতবে আমি শব্দটি প্রতিধ্বনিত করতে চাই $PATHএবং প্রকৃত ভেরিয়েবলটি কী echo "$PATH"কাজ করে তা নয়।


হ্যাঁ মত একক উদ্ধৃতি ব্যবহার করুন: echo '$PATH'। উদ্ধৃতি সম্পর্কে আরও তথ্যের জন্য, এই এবং এটি দেখুন
পান্ড্যা

@ ডন সার্ভারফল্টে কেবল একটি ডুপ দেখেছে। আমার খারাপ।
geedoubleya


@ স্টাফেনচাজেলাস এই প্রশ্নটির চেয়ে প্রায় দুই বছর নতুন er
ডিসপ্লেনাম

@ ডিসপ্লেনাম, হ্যাঁ তবে এই সমস্ত "কীভাবে আমি বিশেষ চরিত্র এক্স প্রদর্শন করব" এই সমস্তটি কভার করার জন্য একটি "ক্যানোনিকাল" প্রশ্ন হিসাবে লক্ষ্য করা হচ্ছে। (আমি নিশ্চিত নই যে এই "ক্যানোনিকাল" কভার-ইট-সমস্ত উত্তরগুলি নির্দিষ্ট প্রশ্নগুলি বন্ধ করার জন্য ব্যবহৃত হচ্ছে, তবে আমি কেবল এটি একটি নিকট ভোটের পরিবর্তে একটি মন্তব্য হিসাবে যুক্ত করেছি)।
স্টাফেন চেজেলাস

উত্তর:


77

আপনার শুধু ডলার পালাতে হবে $

echo \$PATH
$PATH

বা একক উদ্ধৃতিতে এটি ঘিরে:

echo '$PATH'
$PATH

এটি শেল দ্বারা শব্দটি ব্যাখ্যা না করা নিশ্চিত করবে।


1
ধন্যবাদ, echo -eম্যান পৃষ্ঠায় এটি কিছুই বলেনি ।
ডিসপ্লেনাম

-eপতাকা প্রসারিত করতে, যেমন, ব্যবহার করা হয় \tএকটি আক্ষরিক ট্যাব অক্ষরে। এটি প্যারামিটারের প্রসারণ রোধ করতে ডলার চিহ্ন থেকে পালানোর সাথে সম্পর্কিত নয়।
চিপনার

2
কোনও ফাইলের দিকে পরিচালিত করার সময় এটি কাজ করে না। echo '\$PATH' >> output.txt"/ ইউএসআর / স্থানীয় / বিন: / ইউএসআর / এসবিন: / ইউএসআর / বিন: / এসবিন: / বিন: / ইউএসআর / গেমস: / ইউএসআর / স্থানীয় / গেমস: / অপ্ট / ভিসি / বিন" ফাইলটিতে লিখিত থাকার ফলাফল , "AT পথ" নয়।
সেরিন

2
খুব আকর্ষণীয়, আপনি যদি একক উদ্ধৃতি এবং একটি পালানো চরিত্র ব্যবহার করেন তবে তা কেবল প্রতিধ্বনিত হওয়া উচিত $ AT আপনার ইকো কোমন্ডটি কোন ওএস / প্যাকেজ থেকে উত্সাহিত হয়েছে?
geedoubleya

তোমার জন্য @Cerin @ Stéphane উত্তর কাজ echo '\044*' > first.txtএটা করবে first.txt আউটপুট $ *
ম্যাক

20

$বেশিরভাগ শাঁসের সিনট্যাক্সে খুব বিশেষ একটি চরিত্র। যদি আমরা কেবল বোর্নের মতো শেলগুলি দেখি তবে এটি পরিচয় করানোর জন্য ব্যবহৃত হয়:

  1. হিসেবে প্যারামিটার প্রসারণও $#, $var,${foo:-bar}
  2. কমান্ড প্রতিস্থাপন হিসাবে $(logname)( ${ logname;}কিছু শেল মধ্যে সাবসেল এড়ানোর জন্য)
  3. গাণিতিক সম্প্রসারণ যেমন ছিল $((1+1))( $[1+1]কিছু শেলের মধ্যেও )।
  4. কিছু শেল যেমন $'\n'বা হিসাবে উদ্ধৃতি অন্যান্য ফর্ম $"localized string"

গত কেস ছাড়া, যারা প্রসারণও / বদল এখনও উদ্ধৃতি চিহ্ন ভিতরে ঘটতে (এবং ভিতরে $"..."মধ্যে bashবা ksh93)

এটিকে $বিশেষভাবে চিকিত্সা করা থেকে বিরত রাখতে আপনার সাথে এটির সাথে উদ্ধৃতি দিতে হবে:

  • একক উদ্ধৃতি: echo '$PATH'বা echo '$'PATH। আপনি সাধারণত যেটিকে ব্যবহার করতে চান এটি বেশিরভাগ শেলের মধ্যে সমস্ত অক্ষর (নিজে ছাড়া) এড়িয়ে যায়।
  • blackslash: echo \$PATH। ডাবল উক্তিগুলির ভিতরেও:echo "\$PATH"
  • কিছু শাঁস মধ্যে, কিছু অন্যান্য উদ্ধৃত অপারেটর: echo $'$PATH', echo $'\44PATH'(একটি হওয়া ASCII সামঞ্জস্যপূর্ণ অক্ষরসেট অভিমানী),echo $'\u0024'

বা নিশ্চিত করুন যে এটি উপরে তালিকাভুক্ত হিসাবে কোনও বৈধ ফর্মের অংশ নয়:

  • echo "$"PATH
  • echo $""PATH,echo $"PATH" । এগুলি এড়ানো উচিত কারণ কিছু শেল কোট আকারে পছন্দ করে ksh93এবং bashসমর্থন করে $"..."
  • echo $``PATH। আপনি কেন এটি সম্ভব তা দেখাতে ব্যতীত আপনি কেন এটি ব্যবহার করতে চান তার কোনও কারণ নেই।
  • echo "${$+$}PATH" এবং অন্যান্য সংশ্লেষিত ...

অথবা আপনি যে $অন্যভাবে আউটপুট করতে পারেন :

  • ইউনিক্স-কমপ্লায়েন্ট সহ echo: echo '\044PATH'(কিছু অন্যান্য echoপ্রয়োজন echo -e '\044PATH')
  • printf '\44PATH\n'
  • বিড়াল << \ ইওএফ
    $ PATH-
    ফাইলের শেষে

লক্ষ্য করুন যে কীভাবে এই ব্যাকস্ল্যাশগুলি উদ্ধৃত করা দরকার কারণ এগুলিও স্পষ্টতই শেলের জন্য বিশেষ।

আশা এখন, কোন ভাল কারণ আপনি অন্য কিন্তু কিছু ব্যবহার করতে চান সেটি আছে যদিও এটা করতে অনেক উপায় আছে যে স্পষ্ট হওয়া উচিত echo '$PATH'এখানে।


1

নোট করুন যে আক্ষরিক double ডাবল উদ্ধৃতিগুলির ভিতরে একটি সমস্যা হতে পারে। এটি ডাবল উদ্ধৃতিগুলির বাইরে এই জাতীয় উত্পাদনের মাধ্যমে করা যেতে পারে:

echo "My terminal is $term, first file found in /dev is </dev/`ls /dev | head -n 1`>, the
dollar symbol is '"`echo '$'`"', and a newspaper costs "`echo '$'`"2.50."

or like this:

echo "$term is the value of "'$term'

আউটপুট:

My terminal is xterm, first file found in /dev is </dev/acpi>, the dollar symbol
is '$', and a newspaper costs $2.50.

xterm is the value of $term

বা echo "$term is the value of \$term"ইতিমধ্যে অন্য উত্তরে ব্যাখ্যা করা হয়েছে। বা printf '%s is the value of $term\n' "$term"যাইহোক যাইহোক, কেউ echoযথেচ্ছ ডেটার জন্য ব্যবহার করা উচিত নয় ।
স্টাফেন চেজেলাস

-2

ব্যবহার করুন:

echo ''\$PATH'' >> output.txt 

এটি কাজ করবে।


2
ডাউন-ভোটিংয়ের সময় দয়া করে একটি মন্তব্য যুক্ত করুন
Andreas-h

2
বাec""h'''o''' ''""''\$P''A""TH''
স্টাফেন চেজেলাস

আমি নিশ্চিত নই যে এই উত্তর দিয়ে কী চেষ্টা করা হচ্ছে। উত্তরটি হয় either $ বা একক উদ্ধৃতি ব্যবহার করা। প্রতিধ্বনি '$ पथ' প্রিন্ট করবে AT পাঠ প্রতিধ্বনি '$ AT पथ' প্রিন্ট করবে $ AT পথ প্রতিধ্বনি "\ AT पथ" প্রিন্ট করবে $ পাঠ ইকো '' \ AT পাঠ '' প্রযুক্তিগতভাবে সঠিক কাজ করবে, তবে দুটি নাল স্ট্রিং কোন উদ্দেশ্য পরিবেশন।
ববপল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.