【问题标题】:Shell script to create a new SQL dump用于创建新 SQL 转储的 Shell 脚本
【发布时间】:2014-09-05 22:35:14
【问题描述】:

我目前正在使用 MAMP pro,我想创建一个简单的终端脚本(或 PC 上的 .bat 文件),它允许我创建一个 sql 转储(我进入并预配置数据库名称)和它自动为我创建.sql 文件。

这是我目前所知道的:

1:脚本首先要访问cd /applications/MAMP/library/bin

2:当它在那个目录中时,它应该运行以下内容

./mysqldump -u root -p databaseName > /Applications/MAMP/htdocs/website/db.sql

最后,在那个目录中,当我点击脚本时,它不应该替换旧文件,而是创建一个新文件,可能只是在其后添加日期或整数。

这可能吗?

抱歉,我不知道最好的方法。

提前致谢。

【问题讨论】:

    标签: mysql macos bash shell sh


    【解决方案1】:

    您使用的是 OSx 吗?

    #!/bin/bash
    cd /applications/MAMP/library/bin && mysqldump -u root -p databaseName >   /Applications/MAMP/htdocs/website/db.sql
    

    在此之后,您需要为您的脚本设置权限:

    chmod +x your_script_file
    

    现在,你可以打电话了……

    ./your_script_file
    

    sh yout_script_file
    

    如果要替换旧文件,此命令会这样做,因为新文件名与旧文件名相同

    【讨论】:

      【解决方案2】:

      只是另一个答案的变体(投票给它!)。您无需更改目录即可执行mysqldump

      #!/bin/bash
      TS=$(exec date '+%s')
      /applications/MAMP/library/bin/mysqldump -u root -p databaseName \
                        > "/Applications/MAMP/htdocs/website/db.$TS.sql"
      

      请注意您同时拥有/Application/application 目录。根据您的 FS 区分大小写,这可能是一个错误。

      【讨论】:

        【解决方案3】:

        你可以有这个:

        #!/bin/sh
        TS=$(exec date '+%s')
        cd /applications/MAMP/library/bin && \
            ./mysqldump -u root -p databaseName > "/Applications/MAMP/htdocs/website/db.$TS.sql"
        

        它将以db.(timestamp).sql 的形式创建文件。

        如果你想有其他形式,只需更改date命令即可。 '+%s' 指定要生成的格式,即时间戳。您可以使用date --helpman date 查看其他格式。

        【讨论】:

        • $(exec date...)$(date ...) 有什么优势?
        • 只是可选的以防止额外的分叉。如果没有exec,shell 会生成一个shell->subshell->date 的进程树,而使用exec 它只会变成shell->date
        • 感谢您的解释!它不是 bash 构造吗?还是可以在普通的旧 sh 上使用?
        猜你喜欢
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多