সাধারণত, $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
। এইভাবে এটি দেখতে খুব স্বাভাবিক দেখাচ্ছে (একবার আপনি এটির-
অর্থ কী তা বুঝতে