Periksa sama ada pemboleh ubah mengandungi nombor dalam bash

Periksa sama ada pemboleh ubah mengandungi nombor dalam bash

Nombor adalah gabungan 0-9 digit-pembolehubah bash menyimpan semua nilai dalam bentuk rentetan. Walaupun nilai yang disimpan dalam format rentetan, kita boleh melaksanakan semua operasi aritmetik jika nilai yang disimpan adalah nombor yang sah. Sebagai amalan terbaik, kita harus mengesahkan nilai pembolehubah sebelum melaksanakan operasi aritmetik.

Nombor boleh menjadi nombor integer, nombor titik terapung, atau nombor positif/negatif yang awalan dengan simbol "+ dan -". Dalam tutorial ini, kami telah membincangkan beberapa kaedah untuk mengesahkan bahawa pembolehubah hanya mengandungi digit, bilangan bulat, dan nilai dua atau terapung, bukan abjad.

Menggunakan pengendali tilde (= ~) yang sama

Ekspresi biasa adalah cara yang cepat dan mudah untuk memeriksa jika nilai adalah nombor. Dalam skrip bash, tilde yang sama (= ~) Pengendali digunakan untuk membandingkan nilai dengan ungkapan biasa. Yang boleh digunakan dengan bash jika pernyataan:

#!/usr/bin/env bash # shell skrip untuk memeriksa sama ada nombor input adalah integer baca -p "Sila masukkan nombor:" var if [[$ var = ~ ^[0-9]+$]]; kemudian echo "$ var adalah nombor" else echo "$ var bukan nombor" fi
12345678910#!/usr/bin/env bash# shell skrip untuk memeriksa sama ada nombor input adalah integer baca -p "Sila masukkan nombor:" var if [[$ var = ~ ^[0-9]+$]]; kemudian echo "$ var adalah nombor" else echo "$ var bukan nombor" fi

Tulis coretan di atas dalam skrip shell dan laksanakan. Masukkan kali pertama nombor nilai.

Larian Pertama Sila masukkan nombor: 12 12 adalah nombor 

Sekali lagi jalankan skrip dengan beberapa huruf dan periksa output:

Larian Kedua Sila masukkan nombor: 1a2b 12a bukan nombor 

Periksa sama ada nombor titik terapung

Nombor titik terapung adalah jenis integer yang mewakili nombor yang boleh memegang bahagian pecahan (juga dikenali sebagai terapung). Seperti namanya, nombor -nombor ini boleh mengambil nilai yang berbeza di tempat dan masa yang berbeza. Nombor titik terapung biasanya digunakan untuk mewakili nombor dengan titik perpuluhan di dalamnya. Contohnya, 1.0, 0.6, dan 10.26 semua nombor terapung.

Tulis skrip shell baru yang menganggap nombor titik terapung sebagai nombor yang sah.

#!/usr/bin/env bash # shell skrip untuk memeriksa sama ada nombor input adalah nombor # yang boleh menjadi integer atau nombor titik terapung baca -p "Sila masukkan nombor:" var if [[$ var = ~ ^[0 -9]+([.] [0-9]+)?$]]; kemudian echo "$ var adalah nombor" else echo "$ var bukan nombor" fi
1234567891011#!/usr/bin/env bash# shell skrip untuk memeriksa sama ada nombor input adalah nombor# yang boleh menjadi integer atau nombor titik terapung baca -p "Sila masukkan nombor:" var if [[$ var = ~ ^[0 -9]+([.] [0-9]+)?$]]; kemudian echo "$ var adalah nombor" else echo "$ var bukan nombor" fi

Jalankan skrip di atas dengan memasukkan beberapa nombor titik terapung. Skrip ini akan mempertimbangkan semua nombor titik terapung sebagai nombor yang sah.

Larian Pertama Sila masukkan nombor: 12.10 12.10 adalah nombor 

Menggunakan pernyataan kes suis

Beberapa skrip yang diperlukan untuk mempunyai penyataan kes. Yang serupa dengan pernyataan suis dalam bahasa pengaturcaraan lain. Kami juga boleh menggunakan ungkapan biasa dalam pilihan penyataan kes dan mengesahkan jika input yang diberikan adalah nombor.

#!/usr/bin/env bash # shell skrip untuk memeriksa sama ada nombor input adalah nombor # menggunakan pernyataan kes suis baca -p "Sila masukkan nombor:" var case $ varin "|*[[!0-9]*) echo "$ var bukan nombor" ;; *) echo "$ var adalah nombor" ;; ESAC
12345678910#!/usr/bin/env bash# shell skrip untuk memeriksa sama ada nombor input adalah nombor# menggunakan pernyataan kes suis baca -p "Sila masukkan nombor:" var case $ varin "|*[[!0-9]*) echo "$ var bukan nombor" ;; *) echo "$ var adalah nombor" ;; ESAC

Jalankan skrip di atas beberapa kali dengan input yang berbeza dan lihat hasilnya:

Larian Pertama Sila masukkan nombor: 12 12 adalah nombor 

Periksa sama ada nombor mengandungi +/- Tanda

Dalam kaedah di atas, kami telah memeriksa nilai integer yang mengandungi 0-9 digit sahaja, nombor titik terapung yang juga mengandungi sebahagian kecil daripada nilai yang dikenali sebagai nombor perpuluhan. Dalam beberapa kes, bilangan juga boleh positif atau negatif. Mana -mana nombor tanpa awalan atau dengan + adalah nombor positif. Nombor dengan - awalan adalah nombor negatif.

Kemas kini ungkapan biasa, untuk mempertimbangkan nombor yang mempunyai +/- menyanyi sebelum itu.

#!/usr/bin/env bash # shell skrip untuk memeriksa sama ada nombor input adalah nombor # dan boleh menjadi nombor positif atau negatif baca -p "Sila masukkan nombor:" var if [[$ var = ~ ^[+ - ]?[0-9]+$]]; kemudian echo "$ var adalah nombor" else echo "$ var bukan nombor" fi
1234567891011#!/usr/bin/env bash# shell skrip untuk memeriksa sama ada nombor input adalah nombor# dan boleh menjadi nombor positif atau negatif baca -p "Sila masukkan nombor:" var if [[$ var = ~ ^[+ - ]?[0-9]+$]]; kemudian echo "$ var adalah nombor" else echo "$ var bukan nombor" fi

Jalankan skrip di atas dengan input yang berbeza-2 dan periksa hasilnya.

Larian Pertama Sila masukkan nombor: 12 12 adalah nombor kedua yang kedua sila masukkan nombor: -12 -12 adalah nombor ketiga yang dijalankan sila masukkan nombor: +12 +12 adalah nombor 

Periksa sama ada nombor adalah postive atau negatif

Semasa melakukan operasi aritmetik dalam skrip bash, anda harus mengesahkan nilai input. Skrip shell di bawah akan membantu anda untuk memeriksa sama ada nombor input adalah nombor positif atau nombor negatif.

#!/usr/bin/env bash # skrip shell untuk memeriksa sama ada nombor input # adalah nombor positif atau nombor negatif baca -p "Sila masukkan nombor:" var ## periksa jika input adalah nombor yang sah jika [[$ var var = ~ ^[+,-]?[0-9]+$]]; maka ## semak jika input adalah nombor positif atau negatif jika [[$ var = ~ ^[-] [0-9]+$]]; Kemudian echo "$ var adalah nombor negatif" else echo "$ var adalah nombor positif" fi else echo "$ var bukan nombor" fi
1234567891011121314151617#!/usr/bin/env bash# shell skrip untuk memeriksa sama ada nombor input# adalah nombor positif atau nombor negatif baca -p "Sila masukkan nombor:" var ## periksa jika input adalah nombor yang sah [[$ var = ~ ^[+,-]?[0-9]+$]]; maka ## semak jika input adalah nombor positif atau negatif jika [[$ var = ~ ^[-] [0-9]+$]]; Kemudian echo "$ var adalah nombor negatif" else echo "$ var adalah nombor positif" fielse echo "$ var bukan nombor" fi

Jalankan skrip di atas dengan nombor positif dan negatif. Kemudian periksa hasilnya.

Larian Pertama Sila masukkan nombor: 12 12 adalah nombor kedua yang positif 

Kesimpulan

Nombor adalah koleksi digit dari 0 hingga 9. Sebarang nombor boleh menjadi nombor positif atau negatif. Nombor boleh menjadi nombor integer atau terapung. Tutorial ini membantu anda menyemak sama ada nilai yang diberikan adalah nombor atau tidak dalam skrip bash.