4

У меня есть скрипт SHELL, который использует канал для разделения двух моих команд:

ssh -oBatchMode=yes user@hostname "mysql -u yop -pyop -c yop | echo test"

Проблема в том, что даже если мое соединение с MySQL не работает, оно выполняет echo test . Я хотел бы запретить моему сценарию выполнять любую команду, если предыдущая команда не работает.

Я ищу решение, используя if но ничего не могу придумать.

1 ответ1

5
ssh -oBatchMode=yes user@hostname "mysql -u yop -pyop -c yop && echo test"

Оператор && выполняет вторую команду тогда и только тогда, когда первая выполняется успешно. Вы можете прочитать это как "а потом".

Кстати, если вы просто хотите выполнять команды последовательно, вы должны использовать точку с запятой ; как в cmd1; cmd2 . Труба | выполняет две команды параллельно с stdout первого, подключенного к stdin второго. Не совсем то, что вы хотите, в этом случае.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .