উত্তর:
আপনি বা ( সমতুল্য ) f
ব্যবহার করে কেবল পঠনযোগ্য ফাংশন হিসাবে ঘোষণা করতে পারেন । এটি এই বিল্ট-ইন ইউটিলিটিগুলির বিকল্প যা এগুলি পরিবর্তকের পরিবর্তে কোনও ফাংশনের নাম হিসাবে কাজ করে ।readonly -f f
declare -g -r -f f
readonly
declare -g -r
-f
f
f
$ f(){ echo Hello; }
$ readonly -f f
$ f(){ echo Bye; }
bash: f: readonly function
$ unset -f f
bash: unset: f: cannot unset: readonly function
$ f
Hello
যেমন আপনি দেখতে পাচ্ছেন, ফাংশনটি কেবল পঠনযোগ্য করে তোলে তা কেবল এটি ওভাররাইড হওয়া থেকে রক্ষা করে না, তবে এটি সেট না করা থেকে রক্ষা করে (সম্পূর্ণরূপে অপসারণ)।
বর্তমানে (যেমন হিসাবে bash-5.0.11
), কেবলমাত্র পঠনযোগ্য ফাংশনটি সংশোধন করার চেষ্টা করা যদি কেউ errexit
শেল বিকল্প ( set -e
) ব্যবহার করে তবে শেলটি শেষ হবে না । bash
রক্ষণাবেক্ষণকারী, চেট বলছেন যে এটি একটি তদারকি এবং পরবর্তী প্রকাশের সাথে এটি পরিবর্তন করা হবে।
bash: f: readonly function
এবং শূন্য-নয় এমন স্থিতি কোড উত্পন্ন করে , তবে errexit
বিকল্পটি সক্ষম করা থাকলে প্রস্থান করবেন না ।
bash
, তবে আমি bash
নিশ্চিত হতে মেইলিং তালিকার একটিতে জিজ্ঞাসা করব।
bash
শুধুমাত্র প্রস্থানের যখন set -e
কার্যকর হয় যখন POSIX প্রয়োজন তা (এবং readonly -f
POSIX নয়)। গ্রেগ উল্লেখ করেছেন যে bash
ম্যানুয়ালটিতে কখনই "ফাংশন ঘোষণায় ব্যর্থতা" উল্লেখ করা হয়নি কারণ errexit
প্রস্থানটি ট্রিগার করার কারণ হিসাবে (যদি না কোনও ফাংশন ঘোষণাকে যৌগিক কমান্ড হিসাবে গণনা করা হয়, যা তিনি নিশ্চিত না যে এটি তা করেন না)। থ্রেডটি এখানে চলছে: list.gnu.org/archive/html/help-bash/2019-09/msg00039.html
errexit
বা set -e
আপনার প্রশ্নে কিছু বলেন না ।
typeset -r
:typeset -rf f
।