راهنمای مبتدیان برای BASH - مقایسه چیزها

01 از 08

راهنمای مبتدیان برای BASH - مقایسه چیزها

آموزش BASH - مقایسه رشته ها.

در بخش قبلی آموزش BASH، ما به اظهارات شرطی نگاه کردیم.

این راهنمای بسیار طولانی بود اما واقعا نشان داد که چگونه کنترل جریان منطق را کنترل می کند. این راهنما راه های مختلفی را نشان می دهد که می توانید متغیرها را مقایسه کنید.

تصویر بالا مثال اول در راهنمای این هفته را نشان می دهد:

#! / bin / bash

name1 = "gary"
name2 = "bob"

اگر ["$ name1" = "$ name2"]
سپس
اکو "نام بازی"
چیز دیگری
اکو "نام ها مطابقت ندارد"
فی


در اسکریپت فوق دو متغیر به نام name1 و name2 تعریف کردم و مقادیر "gary" و "bob" را تعیین کردم. همانطور که متغیرها بین علامت نقل قول قرار می گیرند، متغیرهای رشته ای نامیده می شوند که به عنوان آموزش ادامه می یابد.

تمام اسکریپت ها ارزش $ names1 و $ name2 را مقایسه می کنند و اگر آنها را مطابق با رشته "match names" مطابقت بدهند و اگر آنها رشته "names not match" را منتشر کنند.

علامت نقل قول در اطراف متغیرهای $ name1 و $ name2 مهم هستند، زیرا اگر مقدار هر یک از آنها تعیین نشده باشد، اسکریپت همچنان کار خواهد کرد.

مثلا اگر $ name1 هرگز تنظیم نشد، شما با "bob" مقایسه می کنید. بدون علامت نقل قول شما با = "باب" باقی مانده است که به وضوح شکست می خورد.

شما همچنین می توانید از علامت! = برای تعریف برابر نیست به شرح زیر استفاده کنید:

اگر ["$ name1"! = "$ name2"]

02 از 08

راهنمای مبتدیان به BASH - مقایسه رشته ها

آموزش BASH - مقایسه رشته ها.

در مثال بالا تست دو رشته مشابه را مقایسه می کند و می پرسد آیا گری قبل از bob در الفبا می آید؟

واضح است که جواب هیچ است

این اسکریپت کمتر از اپراتور (<) را معرفی می کند. همانطور که کمتر از اپراتور نیز برای هدایت استفاده می شود، شما باید آن را با یک اسلش (\) فرار کنید، زیرا به معنای کمتری از این است که چرا در اسکریپت بالا، "$ name1" \ <"$ name2" را مقایسه کردید.

مخالف کمتر از آن است که آشکارا بزرگتر از آن است. به جای استفاده از \ <استفاده کنید>.

مثلا

اگر [$ name1] \> "$ name2"]

03 از 08

راهنمای مبتدیان به BASH - مقایسه رشته ها

آموزش BASH - مقایسه رشته ها.

اگر می خواهید تست کنید که یک متغیر دارای مقدار است شما می توانید از تست زیر استفاده کنید:

اگر [-n $ name2]

در اسکریپت بالا من آزمایش کرده ام که آیا $ name2 یک مقدار داده شده است یا نه پیام "هیچ مشکلی وجود ندارد، هرگز به نظر نمی رسد".

04 از 08

راهنمای مبتدیان به BASH - مقایسه رشته ها

آموزش BASH - مقایسه رشته ها.

در اسلاید گذشته ما پوشش داده شده است که آیا یک متغیر تعیین شده است یا نه. گاهی اوقات هر چند متغیر ممکن است تنظیم شده باشد، اما ممکن است در واقع ارزش نداشته باشد.

برای مثال:

name1 = ""

برای تست اینکه آیا یک متغیر دارای یک مقدار یا نه (یعنی دارای طول صفر است)، از -z به صورت زیر استفاده کنید:

اگر [-z $ name1]

در اسکریپت فوق، $ name1 را به رشته صفر تنظیم کرده و سپس آن را با استفاده از -z مقایسه کردم. اگر $ name1 صفر باشد، پیام "gary for the evening" رفته است.

05 از 08

راهنمای مبتدیان برای BASH - مقایسه مقادیر

آموزش BASH - مقایسه مقادیر.

تا کنون تمام مقایسه ها برای رشته ها بوده است. در مورد مقایسه تعداد؟

اسکریپت فوق یک نمونه از مقایسه دو عدد را نشان می دهد:

#! / bin / bash

a = 4
b = 5

اگر [$ a = $ b]
سپس
اکو "4 = 5"
چیز دیگری
اکو "4 برابر نیست 5"
فی

برای تعیین یک متغیر به عنوان یک عدد، آن را بدون علامت نقل قول تنظیم کنید. سپس می توانید اعداد را با علامت برابر کنید.

من ترجیح می دهم با استفاده از اپراتور زیر برای مقایسه دو عدد:

اگر [$ a -eq $ b]

06 از 08

راهنمای مبتدیان برای BASH - مقایسه مقادیر

آموزش BASH - مقایسه مقادیر.

اگر می خواهید مقایسه کنید که آیا شماره کمتر از یک عدد دیگر است، شما می توانید از اپراتور کمتر (<) استفاده کنید. همانطور که با رشته ها شما باید از کمتر از اپراتور با اسلش فرار کنید. (\ <)

روش بهتر مقایسه اعداد استفاده از نماد زیر است به جای:

مثلا:

اگر [$ a -lt $ b]

اگر [$ a -le $ b]

اگر [$ a -ge $ b]

اگر [$ a -gt $ b]

07 از 08

راهنمای مبتدیان برای BASH - مقایسه مقادیر

آموزش BASH - مقایسه مقادیر.

در نهایت برای این راهنما، اگر می خواهید تست کنید که آیا دو عدد متفاوت هستند، شما می توانید از اپراتورهای کمتر و بیشتر از (یا بیشتر) از اپراتورها به صورت زیر استفاده کنید:

اگر [$ a <> $ b]

اگر [$ a -ne $ b]

08 از 08

راهنمای مبتدیان به BASH - اپراتورهای مقایسه - خلاصه

اگر سه بخش اول این راهنما را از دست ندهید، می توانید آنها را با کلیک روی پیوندهای زیر پیدا کنید:

در بخش بعدی راهنمای من محاسبات را پوشش خواهم داد.