GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Skript:Prüfen, ob eine Datei eine Textdatei ist?

Geschlossen. Diese Frage ist off-topic. Antworten werden derzeit nicht akzeptiert.

Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage so, dass sie für Unix &Linux Stack Exchange relevant ist.

Vor 5 Jahren geschlossen.


Verbessern Sie diese Frage

Ich schreibe ein menübasiertes Bash-Skript, eine der Menüoptionen besteht darin, eine E-Mail mit einem Textdateianhang zu senden. Ich habe Probleme mit der Überprüfung, ob meine Datei eine Textdatei ist. Folgendes habe ich:

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

Ich bekomme immer wieder den Fehler cut:delimiter must be a single character.

Akzeptierte Antwort:

Das Problem tritt in cut -d -f2 auf . Ändern Sie es in cut -d -f2 .

Zum cut , sehen die Argumente so aus:

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

Und hier ist das Problem. das Leerzeichen in ein Leerzeichen anstelle eines Trennzeichens zwischen Argumenten in Ihrer Shell umgestellt, und Sie haben kein zusätzliches Leerzeichen hinzugefügt, also das ganze -d -f2 part erscheint als ein Argument. Sie sollten ein zusätzliches Leerzeichen hinzufügen, also -d und -f2 erscheinen als zwei Argumente.

Um Verwirrung zu vermeiden, verwenden viele Leute Anführungszeichen wie -d' ' stattdessen.

P.S.:Anstatt Datei zu verwenden und alles ASCII zu machen, würde ich lieber

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

Linux
  1. Wie kann man Bash-Skripte in Vim hervorheben?

  2. Textdatei als Befehle in Bash ausführen

  3. Bash-Skript fügt Text an die erste Zeile einer Datei an

  4. Vergleichen Sie md5-Summen im Bash-Skript

  5. Wie man in einem Bash-Skript nach Unicode sucht

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

35 Bash-Skriptbeispiele

Wie überprüfe ich die Teilzeichenfolge in Shell Script Bash?

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in der Bash-Shell vorhanden ist

Wie überprüfe ich die Syntax eines Bash-Skripts, ohne es auszuführen?