আমার এই লাইনটি আছে .bashrc
এবং আমি এর সঠিক অর্থটি জানতে চাই
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
আমার এই লাইনটি আছে .bashrc
এবং আমি এর সঠিক অর্থটি জানতে চাই
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
উত্তর:
$-
মানে 'বর্তমান পতাকা'।echo $-
"himBH" প্রদান করে। এগুলি সবই খেলাপি।[[ $- != *i* ]] && return
আসলে এটি একটি মন্তব্যে উপরে যা বলেছে তা করে: ইন্টারেক্টিভ পতাকাটি সেট করা আছে কিনা তা এটি পরীক্ষা করে। [[এবং]] এটিকে একটি বুলিয়ান তৈরি করে যাতে এটি একটি "সত্য" বা "মিথ্যা" এ শেষ হয়। "মিথ্যা && প্রত্যাবর্তন" এটিকে "সত্য && প্রত্যাবর্তন" করতে দেয় এবং এটি রিটার্ন কার্যকর করে।ডিফল্ট পতাকাগুলি আরও বিশদে ব্যাখ্যা করা হয়েছে:
এইচ "হ্যাশ অল" এর জন্য রয়েছে: এটি আপনার পাথের অনুসন্ধানের মাধ্যমে কমান্ডের যে অবস্থানগুলি খুঁজে পেয়েছে তা মনে রাখতে বাশকে বলে।
আমি "ইন্টারেক্টিভ" জন্য: ইনপুট প্রবেশ করা এবং আউটপুট ফিরে পাওয়া।
মি "মনিটর" এর জন্য: এটি কাজের নিয়ন্ত্রণ সক্ষম করে
বি "ব্রেস প্রসারিত" এর জন্য। এটি আপনাকে ব্রেস সম্প্রসারণ ব্যবহার করতে দেয়
এইচ "ইতিহাস প্রসারণ" এর জন্য। এটিই আপনাকে ইতিহাসের আদেশটি একটি বিস্মৃতবোধের পয়েন্ট দিয়ে তার নম্বরটি প্রিফ্যাক্স করে পুনরায় চালিত করতে সক্ষম করে
যাইহোক। আমার আছে ...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
মূলত আমি মনে করি একইভাবে তবে পড়া সহজ হয়।
মূলত এর অর্থ হ'ল "যদি শেল ফ্ল্যাগগুলির মধ্যে ছোট হাতের আই থাকে না, তবে এখানে ফাংশন / স্ক্রিপ্ট বন্ধ করুন"।
[[ ]]
ব্যাশে শর্তসাপেক্ষ অভিব্যক্তি বোঝায়
$-
শেল পতাকা মানে। এতে শেলটি ইন্টারেক্টিভ থাকলে এটিতে "আই" থাকবে (যেমন আপনি কমান্ড টাইপ করতে পারেন, এর বিপরীতে, এটি কোনও স্ক্রিপ্ট কার্যকর করছে)
!=
সহজভাবে "সমান নয়" এর অর্থ।
*i*
একটি ওয়াইল্ডকার্ড প্যাটার্ন যা "আই" ধারণকারী কোনও কিছুর সাথে মেলে
return
কোনও যুক্তি ছাড়াই কেবল বর্তমান ফাংশন বা স্ক্রিপ্টের কার্যকারিতা বন্ধ করুন।
&&
লজিকাল এবং অপারেটর। এই ক্ষেত্রে ডানদিকে return
প্রকাশটি কেবল মূল্যায়িত হবে (সম্পাদিত) যদি বাম দিকের অভিব্যক্তিটি সত্য হয় । তাই অনেক প্রোগ্রামিং ভাষায়, a && b
একটি if a then b
সংক্ষিপ্তকরণ - একে "শর্ট সার্কিট মূল্যায়ন" বলা হয় এবং এটি প্রোগ্রামিং শিক্ষকদের এটি ব্যবহার করার সময় পাগল করে তোলে: ডি
আমি এটির মতো বলে ধরে নেব: যদি কোনও ইন্টারেক্টিভ শেলটিতে বাশ খোলা না থাকে তবে কিছু করবেন না।
আমি পুরো ফাংশনটি জানি না, তবে কোনও টিটিওয়াইতে আপনার বাশ খোলা থাকলে সেই লাইনটির নীচে সম্ভবত কমান্ড এবং পতাকাগুলি সেট করা আছে।
$-
এবং*i*
এটি কীভাবে এটির ইন্টারেক্টিভ মোড কিনা তা খুঁজে পেতে অপেক্ষায় রয়েছি