Используйте regex как показано ниже. Это находит слова, содержащие один или несколько Ваших указанных знаков пунктуации, и распечатывает слово и первый знак пунктуации соответствия. Можно расширить его, как Вы считаете целесообразным.
if [[ "$word" =~ ^.*([!?.,])+.*$ ]]
then
echo "Found word: $word containing punctuation mark: ${BASH_REMATCH[1]}"
fi
Кажется, что удар regex мог бы помочь. Дискуссия Stackoverflow о теме: https://stackoverflow.com/questions/304864/how-do-i-use-regular-expressions-in-bash-scripts