هل هناك طريقة التقاط الإخراج من الأمر ، قيمة عودتها إلى المتغيرات في قذيفة النصي ؟
سؤال
لذلك دعونا نقول أن أكون قد أمر ، foo
, في البرنامج النصي يجب إرجاع القيمة و إخراج السلسلة التي أنا مهتم في لتخزين تلك إلى متغير (حسنا على الأقل انتاجها لهذا المتغير ، و عودتها قيمة يمكن استخدامها في المشروط).
على سبيل المثال:
a=$(`foo`) # this stores the output of "foo"
if foo; then # this uses the return value
stuff...
fi
أفضل شيء يمكن أن أفكر لالتقاط أن الناتج هو استخدام بعض الملفات المؤقتة:
if foo > $tmpfile; then
a=$(`cat $tmpfile`)
stuff...
fi
هناك على أية حال أنا يمكن تبسيط ذلك ؟
المحلول
وهذا؟
out=$(cmd)
rv=$?
if test $rv -eq 0; then
echo "all good"
echo $out
else
echo "wtf, exit code was $rv"
fi
وراجع للشغل، $ () وbackticks نوعان من جمل لنفس الغرض، مما يعني أنك فقط م> تريد الكتابة
$(`foo`)
وإذا foo
إخراج نص الأمر الذي تريد تنفيذه مرة أخرى. مثل:
foo()
{
echo echo date
}
$(foo)
$(`foo`)
نصائح أخرى
output=`foo`
echo "Return: $?" # $? is the return code
من bash:(الملاحظة الأولى $ في العمود الأول هو موجه)
$ A=$(echo abc; false); echo status:$? A:$A
status:1 A:abc
لا تستخدم $()
بالإضافة إلى backticks ، كما أن الواقع ينفذ الأمر ثم ينفذ انتاجها.
انظر أيضا:
لا تنتمي إلى StackOverflow