কিছুক্ষণ আগে আমি একটি স্ক্রিপ্ট তৈরি করেছি এবং আমি এর চারপাশে কিছু লগিং যুক্ত করেছি, তবে লগিংয়ের পুনঃনির্দেশটি কীভাবে কাজ করে তা আমি ভুলে গিয়েছিলাম :-(
এর সূচনাটি হ'ল:
#!/bin/bash
LOGFILE=/some/path/mylogfile
(
# here go my commands which produce some stdout
# and, if something goes wrong, also some stderr
) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 )
আমি যখন স্ক্রিপ্টটি চালিত করি, এটি এতে কিছু মুদ্রণ করে না stdout
, তবে যা যা প্রিন্ট করে stderr
। লগফিল ${LOGFILE}
স্টাডআউট এবং স্ট্ডার উভয়কেই ক্যাপচার করে।
আমি যখন স্ক্রিপ্টটি চালনা করি এবং আমার টার্মিনালে কোনও আউটপুট না থাকে, তখন আমি জানি যে সবকিছু ঠিক আছে। যদি কোনও আউটপুট থাকে তবে আমি জানি যে কিছু ভুল হয়েছে এবং সমস্যাটি কী তা জানতে আমি লগফাইলে চেক করতে পারি।
পুনঃনির্দেশের যে অংশটি এখন আমাকে ধাঁধা দেয় তা হ'ল সিনট্যাক্স: 2> >( some command )
সেখানে কি চলছে কেউ ব্যাখ্যা করতে পারেন?
echo <(date)
, আমার প্রতিস্থাপিত ফাইলের নাম দেয়:/dev/fd/63
। যদি আমি চালানোcat <(date)
, আমার তারিখ প্রতিস্থাপিত ফাইলের বিষয়বস্তু দেয়, অর্থাত:Fri Nov 18 14:11:09 NZDT 2016
।