বাশে $ এর ব্যবহার কী?


10

আমি ব্যাশে বিশেষ পরামিতিগুলি সন্ধান করছিলাম। আমি কী আগ্রহী $&এবং এটি থেকে কী আলাদা তা জানতে আগ্রহী $_

কমান্ডগুলি চালনার সময় আমি নিম্নলিখিত আউটপুটটি দেখতে পাচ্ছি কিন্তু অর্থটিও সনাক্ত করতে পারি না।

k@Linux:~$ echo $&
[1] 12397
$
k@Linux:~$ echo $n

[1]+  Done                    echo $
k@Linux:~$ 

উত্তর:


18

$&একক টোকেন / বিশেষ পরিবর্তনশীল নয়, এটি সহজ $এবং &

কমান্ডটি echo $&হিসাবে বিবেচিত হয় echo $ &, যা $পটভূমিতে আক্ষরিক প্রতিধ্বনি করে ।

$_ অন্যদিকে একটি বিশেষ ভেরিয়েবল যা এক্সিকিউট করা সর্বশেষতম কমান্ডের শেষ যুক্তিতে প্রসারিত হয়।


5

যদিও bashদৃষ্টিভঙ্গি আচ্ছাদিত করা হয়েছে, আপনার প্রশ্নের আমাকে মনে করি আপনি ঐ ভেরিয়েবল জুড়ে করেছি তোলে perlকোড।

$&এবং এতে $_বিশেষ ভেরিয়েবল রয়েছে perl। এবং এগুলি বিশেষত perlশেল কোড থেকে কল করা কোডে পাওয়া যায় ।

$_ডিফল্ট পরিবর্তনশীল অনেক perlফাংশন এবং অপারেটর কাজ করে। সেই পরিবর্তনশীলটি ইনপুট অপারেটরগুলির দ্বারা সেট করা ডিফল্ট পরিবর্তনশীল।

ভিতরে:

perl -pe 'some-code' < some-input

কিছু-কোড কিছু ইনপুটটির প্রতিটি লাইনের জন্য চালিত হয়, এতে লাইনটি সঞ্চিত থাকে $_এবং $_কিছু কোড চালানোর পরে এর সামগ্রীটি মুদ্রিত হয়।

s/regex/replacement/অপারেটর উপর কাজ করে $_ডিফল্টরূপে। সুতরাং আপনি প্রায়শই এই জাতীয় জিনিসগুলি পান:

perl -pe 's/foo/bar/'

যা সংক্ষিপ্ত:

perl -pe '$_ =~ s/foo/bar/'

(উপরে, $_যতক্ষণ শেল সম্পর্কিত, তত্ক্ষণাত perlদোভাষীকে দেওয়া একটি ভারব্যাটিম আর্গুমেন্টের অংশ , এটি শেল ভেরিয়েবল নয় That সেই ভারব্যাটিম আর্গুমেন্টটি perlএক্সপ্রেশন ( -e) হিসাবে প্রেরণ করা হয়েছে perl, এবং এটি তার জন্য perlএটি ব্যাখ্যা করা হয়েছে পরিবর্তনশীল)।

$&আর একটি বিশেষ perlপরিবর্তনশীল যা সর্বশেষ ম্যাচিং অপারেটর ( m/.../, s/.../.../...) এর সাথে মিলে যা কিছুতে প্রসারিত হয় ।

এই ক্ষেত্রে:

$ echo foo | perl -lne '
    print "The last character in $_ is $&" if m/.$/'
The last character in foo is o

বা:

$ echo foo bar | perl -pe 's/[aeiou]+/<$&>/g'
f<oo> b<a>r

1

সরবরাহ করার &অর্থ আপনি ব্যাকএন্ডে বা কাজ হিসাবে একটি নির্দিষ্ট কমান্ড চালাচ্ছেন। সুতরাং যে কি দেয় আউটপুট echo $&

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