GNU/Linux >> Znalost Linux >  >> Linux

Bash Script:Zkontrolujte, zda je soubor textovým souborem?

Zavřeno. Tato otázka je mimo téma. Momentálně nepřijímá odpovědi.

Chcete zlepšit tuto otázku? Aktualizujte otázku, aby byla aktuální pro Unix a Linux Stack Exchange.

Zavřeno před 5 lety.


Vylepšete tuto otázku

Píšu bash skript založený na nabídce, jednou z možností nabídky je poslat e-mail s přílohou textového souboru. Mám potíže s kontrolou, zda můj soubor je textový soubor. Tady je to, co mám:

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

Stále se mi zobrazuje chyba:oddělovač musí být jeden znak.

Přijatá odpověď:

Problém nastává v cut -d -f2 . Změňte jej na cut -d -f2 .

Chcete-li cut , argumenty vypadají takto:

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

A tady je problém. místo oddělovače mezi argumenty ve vašem shellu unikl mezerou na mezerový literál místo oddělovače a nepřidali jste mezeru navíc, takže celý -d -f2 část se objeví jako jeden argument. Měli byste přidat jednu mezeru navíc, takže -d a -f2 se objeví jako dva argumenty.

Aby se předešlo zmatkům, mnoho lidí používá uvozovky jako -d' ' místo toho.

P.S.:Místo použití souboru a vytvoření všeho v ASCII bych raději použil

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

Linux
  1. Může být Bash skript připojen k souboru?

  2. Jak zvýraznit Bash skripty ve Vimu?

  3. Spusťte textový soubor jako příkazy v Bash

  1. Bash skript:špatný interpret

  2. bash skript připojí text k prvnímu řádku souboru

  3. Bash smyčka rozbalte skript zaheslovaného souboru

  1. Jak zkontrolovat syslog v Bash na Linuxu?

  2. Jak zkontrolovat, zda je soubor prázdný v Bash?

  3. Jak zahrnout soubor do skriptu bash shell