ssh [email protected] "ls /home/somefile" || { echo "File does not exist"; exit 1; }
Isso é chamado de comando composto. De man bash
:
Compound Commands
A compound command is one of the following:
(list) list is executed in a subshell environment (see COMMAND EXECU‐
TION ENVIRONMENT below). Variable assignments and builtin com‐
mands that affect the shell's environment do not remain in
effect after the command completes. The return status is the
exit status of list.
{ list; }
list is simply executed in the current shell environment. list
must be terminated with a newline or semicolon. This is known
as a group command. The return status is the exit status of
list. Note that unlike the metacharacters ( and ), { and } are
reserved words and must occur where a reserved word is permitted
to be recognized. Since they do not cause a word break, they
must be separated from list by whitespace or another shell
metacharacter.
A sintaxe ()
provavelmente não funcionaria na sua situação porque os comandos seriam executados em um subshell e, em seguida, o exit
apenas fecharia a subshell.
EDIT: para explicar a diferença entre os parênteses ()
e as chaves {}
:
Os parênteses fazem com que os comandos contidos sejam executados em um subshell. Isso significa que outro processo de shell é gerado, o que avalia os comandos, e a questão exit
in OP mataria essa sub-shell.
As chaves, por sua vez, fazem com que os comandos sejam avaliados no shell atual. Agora, o exit
mata o shell atual, o que seria, por exemplo, preferível se você usar esta linha em um script de shell.