GNU/Linux >> Linux の 問題 >  >> Linux

Bashスクリプト:ファイルがテキストファイルかどうかを確認しますか?

閉鎖。 この質問はトピックから外れています。現在、回答を受け付けていません。

この質問を改善したいですか? 質問を更新して、UnixおよびLinuxStackExchangeのトピックになります。

5年前に閉鎖されました。


この質問を改善する

私はメニューベースのbashスクリプトを書いていますが、メニューオプションの1つは、テキストファイルを添付した電子メールを送信することです。ファイルがテキストファイルかどうかを確認できません。これが私が持っているものです:

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

エラーカットが発生し続けます。区切り文字は1文字である必要があります。

承認された回答:

この問題はcut-d -f2で発生します 。 cut -d -f2に変更します 。

カットするには 、引数は次のようになります:

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

そしてここに問題があります。 シェル内の引数間の区切り文字ではなく、スペースリテラルにスペースをエスケープし、スペースを追加しなかったため、 -d -f2全体 一部は1つの引数として表示されます。 -d のように、スペースを1つ追加する必要があります および-f2 2つの引数として表示されます。

混乱を避けるために、多くの人は -d''のような引用符を使用します 代わりに。

追伸:ファイルを使用してすべてをASCIIにする代わりに、使用したい

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

Linux
  1. VimでBashスクリプトを強調表示するには?

  2. Linux の Bash で syslog を確認するには?

  3. Bashでファイルが空かどうかを確認するには?

  1. ファイルを bash シェル スクリプトに含める方法

  2. bash スクリプトで md5 の合計を比較する

  3. bash スクリプトで unicode を grep する方法

  1. Bashスクリプトをファイルに接続できますか?

  2. シェルスクリプトBashでサブストリングをチェックする方法は?

  3. ファイル記述子が削除されたファイルを参照しているかどうかを確認します (Bash で)