이메일에 첨부된 파일이 텍스트 파일인지 확인하고, 그렇지 않으면 오류를 반환하려고 합니다. 그러나 테스트 중에 유효한 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;
그리고 파일 유형에 따라 파일을 어떻게 처리할지 결정하세요.