كيف يمكنني التقاط إخراج أمر إلى واصف ملف في بورن شل؟
سؤال
الطريقة القياسية لالتقاط إخراج الأوامر في Bourne Shell هي استخدام $()
بناء الجملة:
output=$(mycommand)
بالنسبة للأوامر التي تحتوي على الكثير من الإخراج ، فإن هذا يتطلب تخصيص ذاكرة القذيفة لكل شيء كسلسلة طويلة. أفضل العثور على شيء يقوم بالمكافئ الأخلاقي لوظيفة UNIX C popen
, ، للحصول على واصف ملف جديد يمكنني read
من:
newfd=popen(mycommand)
while read -u $newfd LINE; do
#process output
done
هل هذا ممكن؟
المحلول
#!bash
ls | while read X
do
echo $X is a directory entry
done
استبدل "LS" بأمر من اختيارك
لا تنتمي إلى StackOverflow