Te estás perdiendo ;
s. La sintaxis general si se pone todo en una sola línea sería:
if thing ; then ... ; else ... ; fi
la thing
puede ser casi cualquier cosa que devuelve un código de salida. Se toma la rama then
si ese thing
devuelve 0, la rama else
en caso contrario.
[
no es la sintaxis, que es el programa test
(echa un vistazo a ls /bin/[
, lo que realmente existe, man test
de los documentos – aunque también puede tener una versión integrada con diferentes características/adicionales.) Que se utiliza para probar diferentes condiciones comunes en archivos y variables. (Tenga en cuenta que [[
por otro lado es sintaxis y es manejado por su caparazón, si es compatible).
para su caso, usted no desea utilizar test
directa, que desea probar algo en el host remoto. Así que trate de algo como:
if ssh [email protected] test -e "$file" ; then ... ; else ... ; fi
Usted está tratando de ejecutar ese archivo ... –
En general, necesitas un punto y coma antes de 'then':' if cmd; luego cmd; else cmd; fi' –