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