【问题标题】:How to run bash command during redirect << EOF如何在重定向 << EOF 期间运行 bash 命令
【发布时间】:2014-06-29 04:40:40
【问题描述】:

我知道有一些方法可以在重定向期间运行 bash 命令,但我不知道它是如何完成的。

我想做这样的事情:

#!/bin/bash
mysql -uUser -pPasswd << EOF
echo 'I wanna echo something by using echo which is run by bash'
use Mydb
some sql commands here
commit;
EOF

我曾经在 "

【问题讨论】:

  • 这是正确的语法,据我所知。
  • 您似乎更有可能在 MySQL 命令中遗漏了一些 ;
  • @merlin2011 因为引号可能会造成混淆,我将使用系统命令,它是如此清晰。抱歉错过了';' ,我只是发帖太匆忙了。
  • @ruakh 对不起我的英语不好。我想运行 echo(bash) 命令除了(这是正确的词吗)很多 mysql 命令,以显示 mysql 命令的过程。

标签: mysql bash shell eof io-redirection


【解决方案1】:

您可以在mysql 命令行客户端中使用system command

#!/bin/bash
mysql -uUser -pPasswd << EOF
system echo 'I wanna echo something by using echo which is run by bash';
use Mydb
some sql commands here
commit;
EOF

【讨论】:

  • @Blangero:system 命令是否因某种原因不适合您?
  • 不,它工作正常,你为什么问?我做错了什么或令人困惑吗? @anubhava
  • 不用担心,我只是在检查是否发现此命令有问题。
【解决方案2】:

除了使用heredoc 从bash 与MySQL 交互之外,您还可以简单地以批处理模式调用mysql 本身。这在您有相当短的查询时很有用,并且无需从 heredoc 正文中调用系统。 bash中的一般形式是:

$(mysql -uuser -hhost database.table -Bse "any valid mysql command")

(如果在查询中标识了.table,则可以省略)处理mysql返回的信息,通常建议将信息返回到数组中:

results=( $(mysql -uuser -hhost database.table -Bse "any valid mysql command") )

在这方面,您可以以更灵活的方式构建脚本。

【讨论】:

  • 很好用,下次试试。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 2015-06-02
相关资源
最近更新 更多