সাধারণত, $0কোনও স্ক্রিপ্টে স্ক্রিপ্টের নাম সেট করা থাকে বা যা (পথ সহ) হিসাবে ডাকা হত to যাইহোক, যদি আমি ব্যবহার bashসঙ্গে -cবিকল্প, $0আর্গুমেন্ট কমান্ড স্ট্রিং পরে গৃহীত প্রথম সেট করা হয়:
bash -c 'echo $0 ' foo bar
# foo
বাস্তবে, দেখে মনে হচ্ছে অবস্থানগত পরামিতিগুলি স্থানান্তরিত হয়েছে তবে এতে অন্তর্ভুক্ত রয়েছে $0। তবে shiftকমান্ডের স্ট্রিং $0(সাধারণ হিসাবে) প্রভাবিত করে না :
bash -c 'echo $0; shift; echo $0 ' foo bar
# foo
# foo
কমান্ড স্ট্রিংয়ের জন্য কেন এই দৃশ্যত অদ্ভুত আচরণ? নোট করুন যে আমি এইরকম বিজোড় আচরণ বাস্তবায়নের পিছনে যুক্তি, যুক্তি খুঁজছি।
কেউ অনুমান করতে পারে যে এই জাতীয় কমান্ড স্ট্রিংয়ের $0সাধারণত সংজ্ঞায়িত হিসাবে প্যারামিটারের প্রয়োজন হবে না , সুতরাং অর্থনীতির ক্ষেত্রে এটি সাধারণ আর্গুমেন্টগুলির জন্যও ব্যবহৃত হয়। তবে সেক্ষেত্রে আচরণটি shiftবিজোড়। আর একটি সম্ভাবনা হ'ল $0প্রোগ্রামগুলির আচরণ সংজ্ঞায়িত করার জন্য ব্যবহৃত হয় (যা লা bashনামে পরিচিত shবা vimবলা হয় vi), তবে তা হতে পারে না, কারণ $0এখানে কেবল কমান্ড স্ট্রিংয়ে দেখা যায় এটির মধ্যে প্রোগ্রাম করা নয়। আমি এর জন্য অন্য কোনও ব্যবহারের কথা ভাবতে পারি না $0, সুতরাং এটি ব্যাখ্যা করার জন্য আমি ক্ষতিতে আছি।
echo 'echo the other side of this pipe globs "$@"' | sh -s -- *, দুর্ভাগ্যক্রমে, ট্রাম বিকল্পের $0সাথে কোনও -sস্থায়ী প্যারামিটারও না ... এটি xargsসাধারণত একইভাবে ব্যবহার করা যেতে পারে , যদিও এটি সাধারণত generally এবং অন্যদের ছাড়াও।
--, তবে এর কিছু অন্যান্য প্রোগ্রামে দেখা যায় 'এখান থেকে যুক্তি শুরু হয়' এর সাধারণ ব্যাখ্যা পাওয়া যেত । তারপরে আবার, এটি অবিচলিতদের বিভ্রান্ত হতে পারে -cভাবতে ভাবতে --আসলে এর ব্যাখ্যা নেই।
-জন্য$0একটি বাগ্ধারা মধ্যে মত যুক্তিsh -c 'foo $1 $2' - a b। এইভাবে এটি দেখতে খুব স্বাভাবিক দেখাচ্ছে (একবার আপনি এটির-অর্থ কী তা বুঝতে