Вместо того, чтобы проверять корректность исполняемого файла, вероятно, лучше проверить текущую архитектуру, а затем выбрать подходящий исполняемый файл на основе этого. Например:
if [ $(uname -m) == 'armv6l' ]; then
tool-rpi
else
tool-osx
fi
Однако, если тестирование исполняемого файла - это то, что вы действительно хотите сделать, GNU file
может сообщить вам архитектуру исполняемого файла:
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