Você está desnecessariamente complicando as coisas. Apenas tente machineA e se isso falhar, vá para machineB:
#!/usr/bin/env bash
set -e
readonly PATH_LOCATION=/testing/directory1
readonly MACHINES=(machineB machineC)
readonly FILE_LOCATION=/data/v1
readonly FILE_NAME=test.tar
readonly TARGET="$FILE_LOCATION/$FILE_NAME"
for MACHINE in ${MACHINES[@]}; do
scp david@$MACHINE:$TARGET $PATH_LOCATION && break
done
Se você quiser saber de qual host você fez o download, poderá fazer:
for MACHINE in ${MACHINES[@]}; do
if scp david@$MACHINE:$TARGET $PATH_LOCATION; then
echo "Downloaded from $MACHINE";
break;
fi
done
E se você quiser fazer outra coisa, se nenhuma das máquinas estiver ativa:
for MACHINE in ${MACHINES[@]}; do
if scp david@$MACHINE:$TARGET $PATH_LOCATION; then
echo "Downloaded from $MACHINE";
break;
fi
done
if [[ $? -eq 1 ]]; then
echo "Download failed"
fi