$(...)
é uma substituição de comando. O shell executa o comando fechado e a expressão é substituída pela saída padrão do comando.
Geralmente, isso produziria um erro se o texto de substituição não nomeasse um comando que o shell pudesse executar. No entanto, test
não produz saída, portanto, o resultado é uma cadeia vazia que o shell "pula". Por exemplo, considere o que acontece se você executar
if $( ssh user@host " echo foo " ); then
echo "File is there"
else
echo "We don't that file on that host"
fi
O código fornecido está escrito corretamente sem a substituição desnecessária do comando; a única coisa que a instrução if
precisa é o status de saída do comando.
if ssh user@host "test -e file"; then
echo "File is there"
else
echo "We don't that file on that host"
fi