首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ssh & shell & mysql中的条件命令

问ssh & shell & mysql中的条件命令
EN

Stack Overflow用户
提问于 2013-02-04 06:17:53
回答 2查看 306关注 0票数 2

我在shell脚本中有以下命令,我在其中执行mysql dump,然后通过ssh将该SQL文件加载到远程数据库中,然后更新时间戳。

代码语言:javascript
复制
1. mysqldump -u root files path | gzip -9 > $SQL_FILE
2. cat $SQL_FILE | ssh -i ~/metadata.pem ubuntu@1.2.3.4 
    "zcat | mysql -u 'root' -h 1.2.3.4 metadata"
3. TIMESTAMP=`date "+%Y-%m-%d-%T"`
4. mysql -u 'root' -h 1.2.3.4 metadata -e "UPDATE path_last_updated SET timestamp=DEFAULT"

例如,如果线路2失败(例如,由于连接问题),但线路4成功了,会发生什么情况?

如何让第4行以第2行的成功为条件运行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-04 06:36:19

您可以在一个块中链接所有内容:

代码语言:javascript
复制
mysqldump -u root files path |
    gzip -9 |
     ssh -i ~/metadata.pem ubuntu@1.2.3.4 "zcat |\
                   mysql -u 'root' -h 1.2.3.4 metadata"  &&
    mysql -u 'root' -h 1.2.3.4 metadata -e "
        UPDATE path_last_updated SET timestamp=DEFAULT"

因此,如果之前出现故障,最后一条mysql命令将不会被执行。

票数 2
EN

Stack Overflow用户

发布于 2013-02-04 06:24:40

上一条命令的get返回码可以用$?,不为0表示失败。

或者,您可以使用&&,例如:cmd1 && cmd2。

或者,如果出现错误,可以使用set -e停止脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14677966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档