আমি কীভাবে ব্যাশ কমপ্লিনেশন ডিবাগ করব?


14

আমি কিছু বাশ সম্পূর্ণ করার ফাংশন তৈরি করেছি যা সমস্ত বিচ্ছিন্নতার সাথে কাজ করে বলে মনে হয় তবে আমি যখন এগুলি দিয়ে সম্পূর্ণ ট্যাব করার চেষ্টা করি তখন আমাকে অপ্রত্যাশিত ফলাফল দেয়।

বাশদ্বির সংযোগ স্থাপন, তারপর কোনও কিছু সম্পূর্ণ ট্যাব করার চেষ্টা করা এবং ডিবাগ করার জন্য এবং কী ভুল হচ্ছে তা নির্ধারণের জন্য পদক্ষেপ নেওয়া সম্ভব?


2
কেবল আমার সেন্টে যুক্ত করতে: set -xআপনার স্ক্রিপ্টগুলি ডিবাগ করার জন্য আপনাকে ইন ব্যাশ ব্যবহার করা উচিত । set +xঅক্ষম করতে ব্যবহার করুন ।

উত্তর:


6

set -x

যদি আপনি set -xহয় ইন্টারেক্টিভ সেশনে বা স্বয়ংক্রিয়রূপে স্ক্রিপ্টে নিজেই (প্রায়?) প্রতিটি কমান্ড এবং এর ফলাফল মুদ্রণ করা হবে। এর মধ্যে স্ব-সম্পূর্ণ স্ক্রিপ্টের ভিতরে করা কাজ অন্তর্ভুক্ত রয়েছে।

এরপরে এটিকে আবার নিস্তব্ধ করে তোলা যেতে পারে set +x

-এক্স

কমান্ড, কেস কমান্ড, কমান্ডের জন্য সিলেক্ট কমান্ড, বা পাটিগণিতের জন্য প্রতিটি সাধারণ কমান্ড প্রসারিত করার পরে, পিএস 4 এর বর্ধিত মান প্রদর্শন করুন, এরপরে কমান্ড এবং এর প্রসারিত আর্গুমেন্ট বা সম্পর্কিত শব্দ তালিকার তালিকা প্রদর্শন করুন।

-বাশ ম্যানুয়াল থেকে # বিল্টিন সেট করুন


2

ব্যাশ সমাপ্তির ফাংশনগুলি থেকে কেবল লগ / আউটপুট; তারা সম্ভবত রকেট বিজ্ঞান না হওয়ায় এটি করা মোটামুটি সহজ হওয়া উচিত be বাশদ্বি সংযোগ করা সম্ভব হতে পারে তবে এটি অপ্রয়োজনীয় বোধ করে ...


স্ক্রিপ্টগুলিতে লগ স্টেটমেন্ট যুক্ত করার চেয়ে বাশদ্বিকে সংযুক্তি করা অনেক সহজ এবং আমার প্রত্যাশা ছিল। তবে, এটি সম্ভব কিনা তা আমি জানি না এবং উত্তরগুলির অভাবে বোঝা যায় যে এটি তা নয়। আপনার পরামর্শ মতো কোনও ফাইলে লগইন করে আমি আমার সমস্যা সমাধান করতে পেরেছি, তবে টার্মিনালে লগিংয়ের তথ্য আউটপুট করা সম্পূর্ণতার সাথে কাজ করার সময় কার্যকর নয়।
ড্যান মিডউড

3
@ ডানমিডউড: দুটি টার্মিনাল (উদাহরণস্বরূপ স্ক্রিন + বিভক্ত) ব্যবহার করুন। একটিতে, সম্পূর্ণকরণ চালান, দ্বিতীয়টিতে tail -fলগ করুন।
চোরোবা

@ চোরোবা: দুর্দান্ত। : ডি
তামারা উইজসম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.