El script de shell que se ejecuta en la máquina remota sale luego de ejecutar make command

Estoy tratando de automatizar la installation de Erl usando script de shell. Aquí está mi script de shell

unzip OTP-18.0-rc1.zip cd otp-OTP-18.0-rc1 export ERL_TOP=`pwd` ./otp_build autoconf ./configure echo $ERL_TOP echo "################### MAKE ###################" make -j8 && make install echo "Creating soft links......" ln -snf /home/user/erlang/otp-OTP-18.0-rc1/bin/erl /usr/bin/erl ln -snf /home/user/erlang/otp-OTP-18.0-rc1/bin/erlc /usr/bin/erlc # Install other packages 

Estoy tratando de ejecutar este script en una máquina remota de esta manera-

 ssh root@host_ip 'bash -s' < my_script.sh 

Sin embargo, la secuencia de commands se cierra después del command make, sin crear los enlaces suaves. Verifiqué que no hay ningún error durante el process de installation. Además, el script funciona perfectamente bien cuando se ejecuta localmente en ese mismo sistema.

Curiosamente, si modifico la secuencia de commands para poner command make en dos líneas separadas como esta-

 make -j8 make install 

El script sale sin hacer make install

¿Que me estoy perdiendo aqui?

El problema es que solo puedes tener 1 stdin, por lo que si tu script bash ejecuta un command que lee de stdin, se engullirá líneas del script.

Intente restablecer stdin para los commands make, p. Ej .:

 ( make -j8 && make install ) </dev/null 

La respuesta de meuh funciona para usted, pero esta es otra opción:

 scp my_script.sh root@host_ip:/tmp/ ssh root@host_ip bash /tmp/my_script.sh