معلومة

6.0 حذف القط

6.0 حذف القط



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

6.0 حذف القط foo / tmp / bar ، cat / tmp / bar & gt ، / tmp / foo

7.0. /bar: لا يوجد مثل هذا الملف أو الدليل

7.0. / foo: لا يوجد مثل هذا الملف أو الدليل

7.0 ./foo / tmp / bar: لا يوجد مثل هذا الملف أو الدليل

7.0 ./bar / tmp / foo: لا يوجد مثل هذا الملف أو الدليل

7.0 ./bar / tmp / foo / tmp / bar: لا يوجد مثل هذا الملف أو الدليل

7.0

أ:

يرجع السلوك الذي تراه إلى استخدامك لميزة globbing الخاصة بالصدفة. إذا كنت تريد أن يتصرف أمر cat بالطريقة التي تصفها ، فيجب عليك إجراء مقارنة متقطعة صراحة.

إذا ["$ a" = "$ (echo $ a | cut -f1 -d /)"] ، إذن

مباراة صدى

آخر

صدى لا يتطابق

فاي

يتم استخدام أمر القطع لإجراء عملية خفقان أولية.

صدى $ "foo / bar" | قطع -f1 -d /

فو

صدى $ "foo / bar" | قطع -f1 -d /

شريط

تعمل عبارة if بعد ذلك على إجراء مقارنة globbing وتقيم فقط تعبير shell إذا تطابق globbing.

بشكل عام ، يعد إجراء مقارنات globbing أكثر صعوبة في shell مقارنةً بلغات البرمجة التقليدية (Python ، Ruby ، ​​إلخ) ، ومن الجيد التحقق مما إذا كنت تستخدم ميزات globbing بشكل مناسب.

أ:

لأنك تستخدم = not = ~ في الحالة.

عندما تفعل

a = $ (echo $ a | cut -f1 -d /)

إذا ["$ a" = "$ (echo $ a | cut -f1 -d /)"]

من ثم

مباراة صدى

آخر

صدى لا يتطابق

فاي

عند المقارنة بهذا الشكل ، فإن a لا يساوي $ (echo $ a | cut -f1 -d /) الذي لا يساوي السلسلة الفارغة بسبب المسافة.

لإصلاح هذا يمكنك القيام به

إذا ["$ a" = "$ (echo $ a | cut -f1 -d /)"]

من ثم

مباراة صدى

آخر

صدى لا يتطابق

فاي

أ:

a = $ (echo $ a | cut -f1 -d /)

تحتاج إلى استخدام علامات الاقتباس المزدوجة حول = ، وإضافة] إلى النهاية. هذا من شأنه أن يعطيك ما تريد.

a = $ (echo $ a | cut -f1 -d /)

إذا ["$ a" = "$ (echo $ a | cut -f1 -d /)"]

إذا لم تقم بإضافة] إلى نهاية البرنامج النصي الخاص بك ، فسيتم تقييم ["bar" = "foo / bar"] إلى true ، لأنه يعتقد أن "bar" = "foo /" هو تعبير صالح. لن يعمل الجزء الأول أيضًا عند إضافة] إلى النهاية. يجب أن يكون مقتبسًا مرتين.

أسهل طريقة لقراءة قيمة $ a (وقيمتها في أي وقت في النص البرمجي) هي استخدام [وبيان الحالة.

a = $ (echo $ a | cut -f1 -d /)

حالة $ a في

/ foo / bar /) صدى "a is 'foo / bar'"، a = '' ،،

*) صدى "a ليس 'foo / bar'" ، a = 'foo / bar' ،،

esac

إذا ["$ a" = "$ (echo $ a | cut -f1 -d /)"]

يأخذ هذا قيمة $ a ويتحقق منها مقابل قيمة معروفة. ثم تعيد تعليمة الحالة هذه $ a إلى القيمة المعروفة. إذا لم تكن قيمة $ a إحدى القيم الصالحة ، فسيتم طباعة رسالة الخطأ على الشاشة.

باستخدام هذه الطريقة ، لا توجد مشاكل مع علامات الاقتباس المزدوجة والمفردة ، وستعمل بشكل صحيح في جميع الحالات التي لا يعمل فيها الإصدار الحالي.

هناك طريقة أخرى أكثر أناقة للقيام بذلك وهي استخدام بعض امتدادات جنو.

إذا [["$ a" = "$ (echo $ a | cut -f1 -d /)"]]

[[يتم تقييم الأمر إلى صحيح إذا كانت السلسلة التي تم تقديمها فارغة. نظرًا لأن الاختبار يتم تقييمه على أساس سلسلة فارغة ، وليس بقيمة $ a ، فإن هذا يعد أكثر كفاءة.


شاهد الفيديو: Things to Know Before Cat Deleting your Car (أغسطس 2022).

Video, Sitemap-Video, Sitemap-Videos