我有一个 SHELL 脚本,它使用管道分隔两个命令:
ssh -oBatchMode=yes user@hostname "mysql -u yop -pyop -c yop | echo test"
问题是,即使我与 MySQL 的连接不起作用,它也会执行echo test
。如果前一个命令不起作用,我想禁止我的脚本执行任何命令。
我寻找解决方案if
但却想不出任何办法。
答案1
ssh -oBatchMode=yes user@hostname "mysql -u yop -pyop -c yop && echo test"
当且仅当第一个命令成功时,操作&&
符才会执行第二个命令。你可以将其读作“然后”。
顺便说一句,如果您只想按顺序执行命令,则可以使用分号;
,如cmd1; cmd2
。管道|
并行运行两个命令,第一个命令的标准输出连接到第二个命令的标准输入。在这种情况下,这根本不是您想要的。