O problema ocorre em cut -d\ -f2 . Mude para cut -d\ -f2 .
Para cut , os argumentos são assim:
# bash: args(){ for i; do printf '%q \\n' "$i"; done; }
# args cut -d\ -f2
cut \
-d\ -f2 \
E aqui está o problema. \ escapou do espaço para um literal de espaço em vez de um delimitador entre argumentos em seu shell, e você não adicionou um espaço extra para que toda a parte -d\ -f2 apareça como um argumento. Você deve adicionar um espaço extra, então -d\ e -f2 aparecem como dois argumentos.
Para evitar confusão, muitas pessoas usam citações como -d' ' .
P.S .: Em vez de usar o arquivo e fazer tudo como ASCII, prefiro usar
if file "$attachment2" | grep -q text$; then
# is text
else
# file doesn't think it's text
fi