এখানে @ জিঙ্কগোফর উত্তরের মতো কিছু রয়েছে তবে @Tino বা @ ডিজেক্লেটন দ্বারা চিহ্নিত সমস্যাগুলি ছাড়াই এবং @ ডগলাসলিডারের চালাক set -o posix
বিটের চেয়ে আরও শক্তিশালী :
+ function SOLUTION() { (set +o posix; set) | sed -ne '/^\w\+=/!q; p;'; }
পার্থক্যটি হ'ল এই সমাধানটি প্রথম অ-পরিবর্তনশীল প্রতিবেদনের পরে যেমন STOPS, যেমন প্রথম ফাংশন দ্বারা প্রতিবেদন করা set
বিটিডাব্লু: "টিনো" সমস্যাটি সমাধান হয়েছে। যদিও পসিক্স বন্ধ করা আছে এবং ফাংশনগুলি দ্বারা রিপোর্ট করা হয়েছে set
, sed ...
সমাধানের অংশটি কেবলমাত্র (যেমন VAR=VALUE
লাইনগুলি) মাধ্যমে পরিবর্তনশীল প্রতিবেদনগুলিকে অনুমতি দেয় । বিশেষত, তাত্পর্যপূর্ণভাবে এটিকে আউটপুট তৈরি A2
করে না ।
+ function a() { echo $'\nA2=B'; }; A0=000; A9=999;
+ SOLUTION | grep '^A[0-9]='
A0=000
A9=999
এবং: "দেজেক্লেটন" সমস্যার সমাধান হয়েছে (পরিবর্তনশীল মানগুলিতে এম্বেড করা নিউলাইনগুলি আউটপুটকে ব্যাহত করে না - প্রত্যেকে VAR=VALUE
একটি একক আউটপুট লাইন পান):
+ A1=$'111\nA2=222'; A0=000; A9=999;
+ SOLUTION | grep '^A[0-9]='
A0=000
A1=$'111\nA2=222'
A9=999
দ্রষ্টব্য: @ ডগলাসলিডার সরবরাহিত সমাধানটি "দেজাইক্লেটন" সমস্যায় ভুগছে (এম্বেডড নিউলাইনগুলি সহ মানগুলি)। নীচে, এটি A1
ভুল এবং একেবারে A2
প্রদর্শন করা উচিত নয়।
$ A1=$'111\nA2=222'; A0=000; A9=999; (set -o posix; set) | grep '^A[0-9]='
A0=000
A1='111
A2=222'
A9=999
শেষ পর্যন্ত: আমি মনে করি না bash
বিষয়গুলির সংস্করণ , তবে এটি হতে পারে। আমি এইটি দিয়ে আমার পরীক্ষা / বিকাশ করেছি:
$ bash --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-msys)
পোস্ট-স্ক্রিপ্ট: ওপিতে অন্যান্য প্রতিক্রিয়াগুলির কয়েকটি দেওয়া, আমি <100% নিশ্চিত রয়েছি যে set
সর্বদা মানের মধ্যে \n
নিউলাইনগুলিকে রূপান্তর করে , যা এই সমাধান "দেজয়ক্লেটন" সমস্যা এড়াতে নির্ভর করে। সম্ভবত এটি একটি আধুনিক আচরণ? অথবা একটি সংকলন-সময়ের প্রকরণ? অথবা একটি set -o
বা shopt
বিকল্প সেটিং? যদি আপনি এই ধরনের বৈচিত্রগুলি জানেন তবে দয়া করে একটি মন্তব্য যুক্ত করুন ...
-o posix
এখন একটি ভিন্ন সঙ্গে ভাল কল শুধুমাত্র ভেরিয়েবল থাকবে।