Bash Script - Umount A Device ، لكن لا تفشل إذا لم يتم تركيبه؟

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

سؤال

أنا أكتب نص باش ولدي errexit تعيين ، بحيث يموت البرنامج النصي إذا لم يرد أي أمر على رمز خروج 0 ، أي إذا لم يكتمل أي أمر بنجاح. هذا هو التأكد من أن نص Bash الخاص بي قوي.

يجب أن أقوم بتركيب بعض أنظمة الملفات ، ونسخ بعض الملفات ، والمعمدة. أنا أضع umount /mnt/temp في البداية بحيث ستعمل عليه قبل القيام بأي شيء. ومع ذلك ، إذا لم يتم تركيبه ، فسوف تفشل Umount ويوقف السيناريو.

هل من الممكن القيام umount --dont-fail-if-not-mounted /mnt/temp؟ بحيث سيعود 0 إذا لم يتم تركيب الجهاز؟ مثل rm -f?

هل كانت مفيدة؟

المحلول

الخدعة القياسية لتجاهل رمز الإرجاع هي لف الأمر في تعبير منطقي يقيم دائمًا للنجاح:

umount .... || /bin/true

نصائح أخرى

على افتراض أن الخاص بك umount إرجاع 1 عند عدم تثبيت الجهاز ، يمكنك القيام بذلك على هذا النحو:

umount … || [ $? -eq 1 ]

ثم لن يفترض باش أي خطأ إذا umount إرجاع 0 أو 1 (أي Unmounts بنجاح أو لم يتم تثبيت الجهاز) ولكن سيوقف البرنامج النصي إذا تم إرجاع أي رمز آخر (على سبيل المثال ، ليس لديك أذونات لإلغاء تثبيت الجهاز).

لقد وجدت للتو ":" أكثر استخدامًا فول وأردت حلًا مشابهًا ولكن دع البرنامج النصي يعرف ما يحدث.

umount ...... || { echo "umount failed but not to worry" ; : ; } 

هذا يعود صحيح مع الرسالة ، على الرغم من فشل umount.

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