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;

그리고 파일 유형에 따라 파일을 어떻게 처리할지 결정하세요.

관련 정보