printf %s\\n "$-"
একক স্ট্রিংয়ে একক অক্ষরের বিকল্পগুলি তালিকাবদ্ধ করবে।
এই প্যারামিটারটি ব্যবহার করা যেতে পারে:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
-fএকসাথে $-- যদি থাকে তবে - এর জন্য একটি মান সংরক্ষণ করার সময় প্রথমে শেল আইলনাম এক্সপেনশনটি অক্ষম করতে $1। এর পরে, কোনও গ্লোব দেখা যায় না এবং শেষ হয়+f গ্লোবস আইলনেম প্রসারণটি আবার সক্ষম হয় এবং সম্ভবত অক্ষমও হয়।
উদাহরণস্বরূপ, যদি -fআইলনাম এক্সপেনশনটি ইতিমধ্যে অক্ষম করা হয় যখন এর জন্য মানটি $-প্রথম সংরক্ষণ করা হয়েছিল, তবে এর সংরক্ষিত মানটি হবে (কমপক্ষে) :
f
এবং তাই setআবার যখন চালানো হয়, এটি কাজ করে:
set +f -f
আপনি ঠিক যেখানে শুরু করেছিলেন তা কেবল আপনাকে পিছনে ফেলে।
set +o
সব তালিকা প্রস্তুত করা যাবে setটেবিল শেল অপশন (দেখুন জেসনের উত্তর জন্য shoptসক্ষম - যে একটি শব্দ - অপশন) একটি ফর্ম যে শেল reentry জন্য নিরাপদ হবে। এইভাবে, আপনি এছাড়াও করতে পারেন:
state=$(set +o)
set -some -crazy -options
eval "$state"
যথাক্রমে শেল বিকল্পগুলির স্থিতি সংরক্ষণ, পরিবর্তন এবং পুনরুদ্ধার করতে।
হ্যান্ডেল করতে shoptআয়ন এবং setএক বারেই টেবিল বিকল্পগুলি:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
শেলটির বর্তমানে সেট করা সমস্ত ভেরিয়েবলের একটি তালিকা যুক্ত করতে আপনি কোনও যুক্তি set ছাড়াই কল করতে পারেন - শেলের পুনরায় প্রবেশের জন্য উদ্ধৃতও। এবং আপনি - ব্যাশে করতে পারেন - পাশাপাশি typeset -fpবর্তমানে ঘোষিত সমস্ত শেল ফাংশন অন্তর্ভুক্ত করতে কমান্ডটি যুক্ত করতে পারেন। আপনি সব একসাথে এবং evalপ্রস্তুত যখন একসাথে করতে পারেন । এমনকি এর aliasজন্য আরও কিছু যুক্তি ছাড়াই আপনি কল করতে পারেন । যদিও ... এটি আবরণ পারে। আমি নেই "$@"- আপনি একটি রাখা আছে চাই যা bashপ্রথম বিন্যাস, আমি কাজ করার আগে অনুমান, set।
নাহ, আছে trap। এই এক সামান্য মজার। সাধারণত:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... শুধু প্রিন্ট হবে এই আমার subshell হয় কারণ subshell একটি নতুন প্রক্রিয়া এবং নিজস্ব সেট পায় trapগুলি - এবং তাই কোনো উত্তরাধিকারী না trapগুলি কিন্তু যারা যা তার পিতা বা মাতা স্পষ্টভাবে উপেক্ষিত হয়েছে - (যেমন trap '' INT) ।
যাহোক:
trap 'echo this is my trap' 0
save_traps=$(trap)
trapকমান্ড সাবস্টিটিউশন সাবসেলের মধ্যে এটি প্রথম এবং একমাত্র কমান্ড চালিত হলে বিশেষত আচরণ করে trapsযেটি শেলটিতে নিরাপদ পুনরায় প্রবেশের জন্য উদ্ধৃত হওয়া একটি ফর্ম্যাটে প্যারেন্ট শেলের বর্তমানে সেট করা একটি তালিকা পুনরুত্পাদন করবে । এবং তাই আপনি কি করতে পারেন save_traps, তারপর set আর্গুমেন্ট ছাড়া - বিশ্রামের এবং সমস্ত ইতিমধ্যে উল্লিখিত - এতে প্রায় কাছাকাছি সব শেল রাষ্ট্র উপর একটি লক পেতে। যদিও আপনি স্পষ্টভাবে যুক্ত করতে export -pএবং readonly -pমূল শেল বিভিন্ন বৈশিষ্ট্যগুলি পুনরুদ্ধার করতে চাইতে পারেন ।
যাইহোক, যথেষ্ট।
set +oএবং ব্যবহার করতে হবেshopt? (shoptএকটি শব্দ হিসাবে সক্ষম হওয়ার জন্যsettable, ম্যান পেজে ব্যবহৃত হয়, সুতরাংshoptableআমার জন্য কাজ করে)