Seu script não está sendo executado corretamente devido à sua declaração if, o seguinte deve funcionar. Requer 2 args, ou irá perguntar-lhes name1 e name2.
A instrução if contém '$ #', que calcula o número de argumentos fornecidos. A seguir, '-ne' é o operador de comparação para 'diferente de'. Finalmente, o último número é para quantos você está esperando. Então, no nosso caso, estamos procurando exatamente 2, se 1 ou 4 forem dados, a instrução else será executada.
#!/bin/bash
echo "What is your name?"
if [[ $# -ne 2 ]] ; then
read name1
read name2
echo "Are you really "$name1 "??? or" $name2 "?"
else
echo "Are you really "$1 "??? or" $2 "?"
fi