Единственный переносимый (без всякого дерьма) способ:
`[ "${var%%*[^A-Za-z0-9]*}" ]`
Обратите внимание, что внешняя программа не запускается, поэтому она более производительна, чем grep
et al. решения.
Обратите внимание, что классы символов обычно (не только в оболочке) чувствительны к локали.
var=ä
[ "${var%%*[^a-z]*}" ] && echo match # prints "match"
Так что вы можете временно установить для языкового стандарта значение C
или создать класс самостоятельно
`[ "${var%%*[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*}" ]`