bashファイルがテキストファイルであることを確認する

bashファイルがテキストファイルであることを確認する

電子メールに添付されているファイルがテキストファイルであることを確認し、そうでない場合はエラーを返そうとします。ただし、テスト中に有効なtext.txtを提供しましたが、「無効な添付ファイル」メッセージが返されました。

send_email()                
{
  message=
  address=
  attachment=
  validuser=1
echo "Enter the email address: "
read address
echo ""
getent passwd | grep -q $address
if [ "$?" = "0" ]
  then
    echo -n "Enter the subject of the message: "
    read message
    echo ""

    echo "Enter the file you want to attach: "
    read attachment
    attachmenttype='file $attachment | cut -d\  -f2'
    if [ $attachmenttype = "ASCII" ]
  then 
  mail -s "$message" "$address"<"$attachment"
  press_enter
elif [ $attachmenttype = "cannot" ]
  then 
  mail -s "$message" "$address"<"$attachment"
  press_enter
else
  echo "Invalid attachment"
  press_enter
fi
 else
    echo "Invalid username"
    press_enter
fi

}

答え1

変える

attachmenttype='file $attachment | cut -d\  -f2'

次のように書く必要があります。

attachmenttype=$(file "$attachment" | cut -d' ' -f2)

バラよりhttp://wiki.bash-hackers.org/syntax/expansion/cmdsubst


または得る無言のタイプ:

$ file -i "$attachmenttype" | cut -d' ' -f2
text/plain;

そして、ファイルの種類に応じてファイルを処理する方法を決定します。

関連情報