Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在重定向期间运行bash命令<&书信电报;EOF_Mysql_Bash_Shell_Eof_Io Redirection - Fatal编程技术网

Mysql 如何在重定向期间运行bash命令<&书信电报;EOF

Mysql 如何在重定向期间运行bash命令<&书信电报;EOF,mysql,bash,shell,eof,io-redirection,Mysql,Bash,Shell,Eof,Io Redirection,我知道有一些方法可以在重定向期间运行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 #/bin/bash mysql-uUser-pPasswd您可以在mysql命令行客户端中使

我知道有一些方法可以在重定向期间运行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
#/bin/bash
mysql-uUser-pPasswd您可以在
mysql
命令行客户端中使用:

#!/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
#/bin/bash

mysql-uUser-pPasswd除了使用herdoc与来自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") )

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

据我所知,这是正确的语法。您似乎更可能缺少一些
在您的MySQL命令中。@merlin2011由于引号可能会混淆,我将使用system命令,它非常清楚。对不起,错过了“;”,我只是发得太急了。@ruakh抱歉我的英语不好。除了(这个词正确吗)许多mysql命令之外,我还想运行echo(bash)命令,以显示mysql命令的过程。@Blangero:system
命令是否出于某种原因对您不起作用?不,它工作得很好,您为什么问这个问题?我做错什么了吗@anubhavaNo担心我只是在检查这个命令是否有问题。它非常有用,我下次会试试。非常感谢你!