كيفية التحقق مما إذا كان ARG اسم ملف صالح في Shell؟

StackOverflow https://stackoverflow.com/questions/1449132

  •  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} هو ملف منتظم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top