GNU/Linux >> Belajar Linux >  >> Linux

Bisakah Grep Mengembalikan Benar/Salah Atau Apakah Ada Metode Alternatif?

Sebagai bagian dari skrip ini, saya harus dapat memeriksa apakah argumen pertama yang diberikan cocok dengan kata pertama file. Jika ya, keluar dengan pesan kesalahan; jika tidak, tambahkan argumen ke file. Saya mengerti cara menulis if pernyataan, tetapi bukan cara menggunakan grep dalam sebuah naskah. Saya mengerti bahwa grep akan terlihat seperti ini

grep ^$1 schemas.txt

Saya merasa ini seharusnya jauh lebih mudah daripada saya membuatnya.

Saya mendapatkan pesan kesalahan “terlalu banyak argumen” di if penyataan. Saya menghilangkan spasi di antara grep -q dan kemudian mendapat kesalahan operator biner yang diharapkan.

if [ grep -q ^$1 schemas.txt ]
then
        echo "Schema already exists. Please try again"
        exit 1
else
        echo "[email protected]" >> schemas.txt
fi

Jawaban yang Diterima:

grep mengembalikan kode keluar yang berbeda jika menemukan sesuatu (nol) vs. jika tidak menemukan apa pun (bukan nol). Dalam if pernyataan, kode keluar nol dipetakan ke "benar" dan kode keluar bukan nol dipetakan ke salah. Selain itu, grep memiliki -q argumen untuk tidak menampilkan teks yang cocok (tetapi hanya mengembalikan kode status keluar)

Jadi, Anda dapat menggunakan grep seperti ini:

if grep -q PATTERN file.txt; then
    echo found
else
    echo not found
fi

Sebagai catatan singkat, ketika Anda melakukan sesuatu seperti if [ -z "$var" ]… , ternyata [ sebenarnya adalah perintah yang Anda jalankan, sama seperti grep. Di sistem saya, ini adalah /usr/bin/[ . (Yah, secara teknis, shell Anda mungkin memilikinya, tetapi itu adalah pengoptimalan. Ini berperilaku seolah-olah itu adalah perintah). Cara kerjanya sama, [ mengembalikan kode keluar nol untuk true, kode keluar bukan-nol untuk false. (test adalah hal yang sama dengan [ , kecuali untuk ] closing penutup )


Linux
  1. Bagaimana saya bisa mengecualikan direktori dari grep -R?

  2. Bisakah exit() gagal menghentikan proses?

  3. Mengapa keluar kode 141 dengan grep -q?

  1. mengembalikan nilai dari skrip python ke skrip Shell

  2. Kode pengembalian grep Linux

  3. Bisakah GNU Grep mengeluarkan grup yang dipilih?

  1. Grep Lambat Keluar Setelah Menemukan Kecocokan?

  2. Apakah ada cara untuk membuang informasi CPUID CPU?

  3. Cara mengetahui apakah ada file di folder dan keluar sesuai (di KSH)