সমস্যা যে ব্যাশ প্রতিটি কমান্ডের শুধুমাত্র একটি প্রস্থান কোড আছে। যখন আপনি export foo="$(false)"
প্রস্থান করার কোডটি false
কেবল বাতিল করা হয়। আপনি যদি পরিবর্তে না
foo="$(false)"
export foo
ব্যর্থ প্রথম কমান্ডের উপর কাজ করা যেতে পারে, উদাহরণস্বরূপ errexit
সেটিংস দ্বারা ।
একটি স্ট্রিং আক্ষরিক যেমন ঘোষনা করা এবং নির্ধারণ করা export foo='bar'
অবশ্যই এই সমস্যায় ভুগছেন না। তবে পরিবর্তন সফ্টওয়্যার বিকাশের একমাত্র ধ্রুবক, এবং ভবিষ্যতের প্রমাণের পক্ষে এই জাতীয় বিবৃতিগুলিকে আলাদা করে দেওয়ার পক্ষে এটি কেবল ভাল গৃহকর্মী।
অ্যাসাইনমেন্ট সুনির্দিষ্ট কমান্ডগুলির পাশাপাশি আপনি উল্লেখ করেছেন যে একটি একক অ্যাসাইনমেন্টে একাধিক কমান্ড রয়েছে যেমন foo="$(false)$(true)"
। দেখুন pipefail
মধ্যে man bash
এখনও অন্য ধরনের ফাঁদ জন্য।
আরেকটি বিষয় মনে রাখতে হবে তা হল ঘোষণার ক্রম এবং কার্যভারটি কখনও কখনও প্রাসঙ্গিক। উদাহরণস্বরূপ, আপনি ভেরিয়েবলগুলি অর্পণ করার আগে তাদের ডিক্লেয়ার করতে চাইবেন । (দুর্ভাগ্যক্রমে ভেরিয়েবলগুলি প্রথমবারের আগে বরাদ্দ দেওয়ার আগে তা ঘোষণা করা সম্ভব নয় ))local
readonly