GNU/Linux >> Belajar Linux >  >> Linux

Bash Script:Periksa Apakah File Adalah File Teks?

Tutup. Pertanyaan ini di luar topik. Saat ini tidak menerima jawaban.

Ingin memperbaiki pertanyaan ini? Perbarui pertanyaan agar sesuai dengan topik untuk Unix &Linux Stack Exchange.

Ditutup 5 tahun yang lalu.


Perbaiki pertanyaan ini

Saya sedang menulis skrip bash berbasis menu, salah satu opsi menu adalah mengirim email dengan lampiran file teks. Saya mengalami masalah dengan memeriksa apakah file saya adalah file teks. Ini yang saya punya:

fileExists=10
until [ $fileExists -eq 9 ]
do
  echo "Please enter the name of the file you want to attach: "
  read attachment
  isFile=$(file $attachment | cut -d -f2)
  if [[ $isFile = "ASCII" ]]
    then
      fileExists=0
    else
      echo "$attachment is not a text file, please use a different file"
  fi
done

Saya terus mendapatkan potongan kesalahan:pembatas harus berupa satu karakter.

Jawaban yang Diterima:

Masalah terjadi di cut -d -f2 . Ubah ke cut -d -f2 .

Untuk cut , argumennya terlihat seperti ini:

# bash: args(){ for i; do printf '%q \n' "$i"; done; }
# args cut -d -f2
cut 
-d -f2 

Dan inilah masalahnya. lolos dari spasi ke literal spasi alih-alih pembatas antara argumen di shell Anda, dan Anda tidak menambahkan spasi ekstra sehingga seluruh -d -f2 bagian muncul sebagai satu argumen. Anda harus menambahkan satu ruang ekstra jadi -d dan -f2 muncul sebagai dua argumen.

Untuk menghindari kebingungan, banyak orang menggunakan kutipan seperti -d' ' sebagai gantinya.

P.S.:Daripada menggunakan file dan membuat semuanya ASCII, saya lebih suka menggunakan

if file "$attachment2" | grep -q text$; then
    # is text
else
    # file doesn't think it's text
fi

Linux
  1. Bagaimana cara menyorot skrip Bash di Vim?

  2. Jalankan file teks sebagai perintah di Bash

  3. Bandingkan jumlah md5 dalam skrip bash

  1. gema teks dengan baris baru di bash

  2. Cara grep untuk unicode � dalam skrip bash

  3. Periksa apakah filedescriptor merujuk ke file yang dihapus (di Bash)

  1. Bisakah Skrip Bash Dihubungkan ke File?

  2. Bagaimana Cara Memeriksa Substring Di Shell Script Bash?

  3. Skrip Bash:juru bahasa yang buruk