Seu padrão funcionaria se você usasse a palavra-chave bash , [[ , em vez do [ ( test ) incorporado e removesse as aspas do padrão glob:
[[ $arch == arm* ]] && echo 'This is ARM Architecture'
Você também pode usar a correspondência de expressão regular usando a palavra-chave [[ e o operador =~ :
[[ $arch =~ ^arm ]] && echo 'This is ARM Architecture'
^arm verifica se a variável $arch contém arm no início (token Regex ^ corresponde ao início de uma linha).
Além disso, para arquiteturas de 32 bits, uname -i deve mostrar i386 ou i686 ou i486 , não x86_32 .
Em uma nota diferente, você deve usar elif construct em vez de usar if três vezes, mas foi projetado para tarefas como essa. Então, seu script completo pode ser reescrito como:
arch=$(uname -i)
if [[ $arch == x86_64* ]]; then
echo "X64 Architecture"
elif [[ $arch == i*86 ]]; then
echo "X32 Architecture"
elif [[ $arch == arm* ]]; then
echo "ARM Architecture"
fi