আমি সাব-শেল তৈরি না করে বা অস্থায়ী ফাইল ব্যবহার না করে কমান্ডের আউটপুটটি লুপ করতে চাই।
আমার স্ক্রিপ্টের প্রাথমিক সংস্করণটি দেখতে দেখতে এগুলি কার্যকর হয়েছিল, তবে এটি কাজ করে না কারণ এটি সাবসেল তৈরি করে এবং exitকমান্ডটি মূল স্ক্রিপ্টের পরিবর্তে সাবশেলটি বন্ধ করে দেয় যা প্রয়োজনীয়। পলিসি রাউটিংটি কনফিগার করার জন্য এটি একটি বৃহত্তর স্ক্রিপ্টের অংশ, এবং যদি এটি এমন কোনও শর্ত সনাক্ত করে যা রাউটিংকে ব্যর্থ করে দেবে it
sysctl -a 2>/dev/null | grep '\.rp_filter' | while read -r -a RPSTAT ; do
if [[ "0" != "${RPSTAT[2]}" ]] ; then
echo >&2 "RP Filter must be disabled on all interfaces!"
echo >&2 "The RP filter feature is incompatible with policy routing"
exit 1
fi
done
সুতরাং প্রস্তাবিত বিকল্পগুলির মধ্যে একটি হ'ল সাব-শেল এড়াতে এই জাতীয় কমান্ড ব্যবহার করা।
while read BLAH ; do echo $BLAH; done </root/regularfile
সুতরাং এটি আমার কাছে মনে হয় যে আমি সাবস্কেলটি এড়াতে এবং এখনও আমার পছন্দসই প্রোগ্রামটি থেকে আউটপুট পেতে এ জাতীয় কমান্ড ব্যবহার করা উচিত।
while read BLAH ; do echo $BLAH; done <(sysctl -a 2>/dev/null | grep '\.rp_filter')
দুর্ভাগ্যক্রমে, এই আদেশটি ব্যবহার করার ফলে এই ত্রুটি হয়।
-bash: syntax error near unexpected token `<(sysct ...
আমি সত্যিই বিভ্রান্ত হয়ে পড়েছি কারণ এটি কাজ করে।
cat <(sysctl -a 2>/dev/null | grep '\.rp_filter')
আমি এই কমান্ডের আউটপুটটিকে একটি অস্থায়ী ফাইলে সংরক্ষণ করতে পারি এবং অস্থায়ী ফাইলটিতে পুনঃনির্দেশ ব্যবহার করতে পারি, তবে আমি তা করা এড়াতে চেয়েছিলাম।
তাহলে পুনঃনির্দেশ কেন আমাকে ত্রুটি দিচ্ছে এবং অস্থায়ী ফাইল তৈরি করার পরে আমার কাছে অন্য কোনও বিকল্প আছে কি?