Em vez de testar um executável válido, é melhor testar qual é a arquitetura atual e, em seguida, selecionar o executável adequado com base nisso. Por exemplo:
if [ $(uname -m) == 'armv6l' ]; then
tool-rpi
else
tool-osx
fi
No entanto, se testar o executável for o que você realmente deseja fazer, o GNU file
poderá informar a arquitetura de um executável:
user@host:~$ file $(whereis cat)
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x4e89fd8f129f0a508afa325b0f0f703fde610971, stripped