আমি নিশ্চিত করতে চাই যে কোনও স্ক্রিপ্টের একটি নির্দিষ্ট পয়েন্টে source
কনফিগারেশন ফাইলের পরে , বেশ কয়েকটি ভেরিয়েবল সেট করা থাকে এবং যদি তা না হয় তবে এক্সিকিউশন বন্ধ করতে, ব্যবহারকারীকে অনুপস্থিত ভেরিয়েবল সম্পর্কে জানিয়ে দেয়। আমি চেষ্টা করেছি
for var in $one $two $three ; do
...
তবে উদাহরণস্বরূপ $two
সেট না করা থাকলে লুপটি কখনই কার্যকর হয় না $two
। পরের জিনিসটি আমি চেষ্টা করেছিলাম
for var in one two three ; do
if [ -n ${!var} ] ; then
echo "$var is set to ${!var}"
else
echo "$var is not set"
fi
done
তবে যদি দুটি সেট না করা থাকে তবে আমি এখনও "দুটি সেট করা হয় না" এর পরিবর্তে "two two to set" পাই।
সমস্ত প্রয়োজনীয় ভেরিয়েবল সেট করা আছে তা আমি কীভাবে নিশ্চিত করতে পারি?
আপডেট / সমাধান: আমি জানি যে "সেট" এবং "সেট, তবে ফাঁকা" এর মধ্যে পার্থক্য রয়েছে। আমি এখন ( /programming//a/16753536/3456281 এবং এই প্রশ্নের উত্তর) ধন্যবাদ ব্যবহার করি :
if [ -n "${!var:-}" ] ; then
সুতরাং, যদি var
সেট করা থাকে তবে খালি থাকে তবে এটি এখনও অবৈধ বলে বিবেচিত হবে।
set -u
যখন কোনও আনসেট ভেরিয়েবল ব্যবহার করা হয় তখনই আপনার স্ক্রিপ্টের শুরুতে এটি অবিলম্বে বন্ধ করতে যোগ করতে পারেন ।