GNU/Linux >> Tutoriels Linux >  >> Linux

Script Bash :vérifier si un fichier est un fichier texte ?

Fermé. Cette question est hors sujet. Il n'accepte pas de réponses actuellement.

Vous voulez améliorer cette question ? Mettez à jour la question afin qu'elle soit sur le sujet pour Unix et Linux Stack Exchange.

Fermé il y a 5 ans.


Améliorer cette question

J'écris un script bash basé sur un menu, l'une des options du menu consiste à envoyer un e-mail avec une pièce jointe de fichier texte. Je n'arrive pas à vérifier si mon fichier est un fichier texte. Voici ce que j'ai :

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

Je reçois sans cesse l'erreur :le délimiteur doit être un seul caractère.

Réponse acceptée :

Le problème se produit dans cut -d -f2 . Changez-le en cut -d -f2 .

Pour cut , les arguments ressemblent à ceci :

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

Et voici le problème. a échappé l'espace à un littéral d'espace au lieu d'un délimiteur entre les arguments dans votre shell, et vous n'avez pas ajouté d'espace supplémentaire donc l'ensemble -d -f2 partie apparaît comme un argument. Vous devez ajouter un espace supplémentaire donc -d et -f2 apparaissent comme deux arguments.

Pour éviter toute confusion, de nombreuses personnes utilisent des guillemets comme -d' ' à la place.

P.S. :Au lieu d'utiliser un fichier et de tout mettre en ASCII, je préfère utiliser

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

Linux
  1. Comment mettre en surbrillance les scripts Bash dans Vim ?

  2. Exécutez le fichier texte en tant que commandes dans Bash

  3. script bash ajoute du texte à la première ligne d'un fichier

  4. Comparer les sommes md5 dans le script bash

  5. Comment grep pour unicode � dans un script bash

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment vérifier si un fichier ou un répertoire existe dans Bash

35 exemples de scripts bash

Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Comment vérifier la syntaxe d'un script Bash sans l'exécuter ?

Boucle Bash décompressez le script de fichier avec mot de passe