كيفية التحقق مما إذا كان ARG اسم ملف صالح في Shell؟
-
11-09-2019 - |
سؤال
أحتاج إلى التحقق مما إذا كانت Args أسماء ملفات صالحة، هل هذه هي الطريقة الصحيحة للقيام بذلك؟ يبدو أنني جعلت بعض الأخطاء مضمنة 2، لكنني لا أعرف أين.
for i in ${@}; do
if [ -f ${i}]; then
echo ${i}
else continue
fi
done
المحلول
بادئ ذي بدء، تحتاج إلى مساحة قبل قوس مربع إغلاق. ويجب أن اقتبس المتغيرات الخاصة بك في حالة وجود مساحة في اسم الملف.
for i in "${@}"; do
if [ -f "${i}" ]; then
echo "${i}"
else continue
fi
done
ال "else continue
"غير ضروري، ما لم يكن هذا عنصر نائب لشيء آخر تخطط لوضعه في مكان"continue
".
نصائح أخرى
فيما يلي حلا مثاليا، يعمل حتى إذا كانت أسماء الملفات تحتوي على مسافات:
for i
do
test -f "$i" && echo "$i"
done
لاحظ أن البيان لا يفترض أن حجج سطر الأوامر، ليست هناك حاجة لكتابة المزيد. أمر الاختبار هو وسيلة قصيرة إذا .. ثم .. فاي
-F يتحقق أن $ {i} هو ملف منتظم.
لا تنتمي إلى StackOverflow