GNU/Linux >> Linux Esercitazione >  >> Linux

Script Bash:controlla se un file è un file di testo?

Chiuso. Questa domanda è fuori tema. Attualmente non accetta risposte.

Vuoi migliorare questa domanda? Aggiorna la domanda in modo che sia in argomento per Unix e Linux Stack Exchange.

Chiuso 5 anni fa.


Migliora questa domanda

Sto scrivendo uno script bash basato su menu, una delle opzioni di menu è inviare un'e-mail con un file di testo allegato. Ho problemi con il controllo se il mio file è un file di testo. Ecco cosa ho:

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

Continuo a ricevere l'errore tagliato:il delimitatore deve essere un singolo carattere.

Risposta accettata:

Il problema si verifica in cut -d -f2 . Cambialo in cut -d -f2 .

Per cut , gli argomenti si presentano così:

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

Ed ecco il problema. sfuggito allo spazio in uno spazio letterale invece di un delimitatore tra gli argomenti nella tua shell e non hai aggiunto uno spazio extra, quindi l'intero -d -f2 parte appare come un argomento. Dovresti aggiungere uno spazio in più quindi -d e -f2 appaiono come due argomenti.

Per evitare confusione, molte persone usano virgolette come -d' ' invece.

P.S.:invece di usare file e fare tutto ASCII, preferisco usare

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

Linux
  1. Uno script Bash può essere agganciato a un file?

  2. Come controllare la sottostringa in Shell Script Bash?

  3. Script Bash:pessimo interprete

  4. Come controllare syslog in Bash su Linux?

  5. Bash loop decomprimere lo script di file con password

Come verificare se esiste un file o una directory in Bash

Come verificare se un file o una directory esiste in Bash

35 Esempi di script Bash

Come verificare se esiste un file o una directory in Bash Shell

Come posso controllare la sintassi di uno script Bash senza eseguirlo?

Controlla se un filedescriptor si riferisce a un file cancellato (in Bash)