【问题标题】:Linux - Execute command withing CLI programLinux - 使用 CLI 程序执行命令
【发布时间】:2017-05-11 17:19:13
【问题描述】:


我尝试搜索我无法得到我的问题的答案,可能是因为我不确定如何正确提问,所以我提前道歉。
我正在尝试在 bash 脚本中执行命令链,例如:

run mysql > type help > exit

root@ubuntu:# mysql
mysql> help
mysql> exit
root@ubuntu:#

如何在 bash 脚本中实现这一点?

我试过操作数 ||, &&, ;所有这些例如:

#!/bin/bash
mysql || help || exit

没用。它一个接一个地执行命令。

【问题讨论】:

  • 您的意思是要按顺序运行多个 MySQL 命令?

标签: linux bash shell


【解决方案1】:

您可以使用 heredoc 传递一些文本,该命令会将其读取为文件:

mysql <<EOF
help
exit
EOF

或者,在 bash 中,您可以使用 herestring,它可以实现与通过标准输入管道命令类似的效果,而无需创建任何额外的子 shell:

mysql <<< $'help\nexit'
# or on other shells
printf 'help\nexit\n' | mysql

请注意,exit 并不是真正需要的,因为mysql 无论如何都会在输入用完时退出。

【讨论】:

    【解决方案2】:

    尝试以下方法:

    mysql << EOF
    help
    exit
    EOF
    

    这将启动 mysql 命令,然后将帮助和退出命令通过管道传输到 mysql 的标准输入,这实际上与直接键入它们相同

    【讨论】:

      【解决方案3】:

      听起来你想要做的是按顺序运行一些 MySQL 命令。

      其他人提到的heredoc方法是在Shell脚本中做的方法。

      也许您只是想从命令行运行相同的 MySQL 命令。如果是这样,MySQL 命令行工具会将包含 help 等命令和其他 SQL 命令的文件作为其默认参数。

      1. 创建一个文件(比如myfile.sql)并编辑内容:

        help
        select * from mytable
        
      2. 保存文件

      3. 将文件传递给mysql:

        mysql myfile.sql
        

      无需拨打exit

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-06
        • 2022-10-19
        • 2017-07-30
        • 2012-04-12
        • 2021-10-08
        • 2011-03-29
        • 2012-06-05
        • 2018-03-10
        相关资源
        最近更新 更多