Você está enfrentando um problema do tipo "ordem de operações", eu acho. O <
é processado antes dos comandos serem executados, então você está executando algo semelhante (embora não idêntico a)
varname=$varname test2.sh | ssh [email protected] bash
que executa o test2.sh
localmente e envia essa saída para bash
no servidor remoto. É por isso que você vê a saída de test2.sh
, mas recebe um erro quando tenta executar essa saída como um comando.
Se você está executando um script que é executável, você não precisa do bash
, então você pode fazer
ssh [email protected] "varname=$varname ./test2.sh"
assumindo que test2.sh
esteja disponível no servidor remoto.
Se você não tiver test2.sh
no servidor remoto e ainda quiser executá-lo, poderá fazer assim:
ssh [email protected] varname="$varname" bash < test2.sh
que redirecionará a fonte do script, mas processará a variável no contexto do bash
executável