Di bagian skrip yang sedang saya kerjakan, saya ingin memvalidasi bahwa alamat IP yang dimasukkan adalah dalam format yang benar. Saya ingin membuat perulangan sementara format input TIDAK benar. Berikut ini berfungsi untuk loop sementara format IS yang benar.
while [[ $range =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]
do
Bagaimana saya bisa membalikkan ini untuk mengatakan TIDAK cocok dengan format. Saya berharap !=~
akan berhasil, tetapi saya mendapatkan kesalahan sintaksis.
Jawaban:
Solusinya sangat sederhana, saya yakin Anda semua akan menganggapnya lucu.
Tidak perlu sibuk tentang detail sintaksis negasi, cukup gunakan
until
sajawhile
.sumber
Untuk perbandingan string, seseorang harus menggunakan
!=
sebagai ganti!=~
.Dari
man bash
Ketika Anda menggunakan ekspresi reguler di sebelah kanan, Anda memang perlu
=~
. Anda dapat memilih untuk meniadakan seluruh ekspresi.Contoh:
sumber
bash
4.2.42. pastebin.com/0vHh5MMB