আপনার বিদ্যমান বলতে কী বোঝায় তা নির্ভর করে ।
ঘোষিত হলেও নির্ধারিত নয় এমন একটি ভেরিয়েবল কি বিদ্যমান ?
খালি তালিকা নির্ধারিত একটি অ্যারে (বা হ্যাশ) ভেরিয়েবলের কি উপস্থিত রয়েছে ?
যা বর্তমানে নির্ধারিত করা হয় না একটি পরিবর্তনশীল করার জন্য একটি nameref পরিবর্তনশীল ইশারা দেয় অস্তিত্ব ?
আপনি বিবেচনা না $-
, $#
, $1
ভেরিয়েবল? (পসিক্স দেয় না)।
বোর্নের মতো শেলগুলিতে, ক্যানোনিকাল উপায়টি হ'ল:
if [ -n "${var+set}" ]; then
echo '$var was set'
fi
এটি স্কেলার ভেরিয়েবল এবং অন্যান্য পরামিতিগুলির জন্য কাজ করে যে কোনও ভেরিয়েবলকে একটি মূল্য নির্ধারণ করা হয়েছে কিনা তা খালি করার জন্য (খালি বা না, স্বয়ংক্রিয়ভাবে, পরিবেশ, অ্যাসিগমেন্টস read
, for
বা অন্যান্য) থেকে কাজ করে tell
শাঁস একটি আছে জন্য typeset
অথবা declare
কমান্ড যে হিসাবে প্রতিবেদন না সেট ভেরিয়েবল যে হয়েছে ঘোষিত কিন্তু নির্ধারিত ছাড়া zsh
।
শেলগুলির জন্য যা অ্যারে সমর্থন করে, ব্যতীত yash
এবং সেট অ্যারে ভেরিয়েবল zsh
হিসাবে রিপোর্ট করবে না যদি না ইনডিস 0 এর উপাদান সেট করা থাকে।
জন্য bash
(কিন্তু ksh93
না zsh
), টাইপ ভেরিয়েবলের জন্য এসসিয়েতিভ আরে , যে তাদের প্রতিবেদন না সেট চাবি "0" সেট করা হয়েছে তাদের উপাদান যদি না।
নেমরেফ টাইপের ভেরিয়েবলের জন্য ksh93
এবং কেবল যদি সেই নামটিফ দ্বারা বর্ণিত ভেরিয়েবলটি সেট হিসাবে বিবেচিত হয় তবেই এটি সত্য হয় ।bash
জন্য ksh
, zsh
এবং bash
, একটি সম্ভাব্য ভালো পদ্ধতির হতে পারে:
if ((${#var[@]})); then
echo '$var (or the variable it references for namerefs) or any of its elements for array/hashes has been set'
fi
জন্য ksh93
, zsh
এবং bash
4.4 বা তার উপরে রয়েছে রয়েছে:
if typeset -p var 2> /dev/null | grep -q '^'; then
echo '$var exists'
fi
যা সেট করা বা ঘোষিত ভেরিয়েবলের প্রতিবেদন করবে।
$somevar
যদি পরিবর্তনশীল বিদ্যমান নেই মান / স্ট্রিং:${somevar:=42}
।