我试着搜索我无法回答我的问题,也许是因为我不确定如何正确地问它,所以我提前道歉。
我试图用bash脚本执行命令链,例如:
run mysql > type help > exit
root@ubuntu:# mysql
mysql> help
mysql> exit
root@ubuntu:#
如何在bash脚本中实现此目的?
我试过了操作数||,&&,;所有这些,例如:
#!/bin/bash
mysql || help || exit
没有工作。它会在彼此之后执行命令。
答案 0 :(得分:6)
您可以使用heredoc传递一些文本,该命令会将其读取为文件:
mysql <<EOF
help
exit
EOF
或者,在bash中你可以使用一个herestring,它可以通过标准输入实现与管道命令类似的效果,而不会创建任何额外的子shell:
mysql <<< $'help\nexit'
# or on other shells
printf 'help\nexit\n' | mysql
请注意,exit
并不是必需的,因为mysql
无论如何都会在输入用完时退出。
答案 1 :(得分:3)
尝试以下方法:
mysql << EOF
help
exit
EOF
这将启动mysql命令,然后将help和exit命令传递给mysql的stdin,这与直接键入它们实际上相同
答案 2 :(得分:2)
听起来你要做的就是按顺序运行一些MySQL命令。
其他人提到的heredoc方法是在Shell脚本中执行的方法。
也许您只想从命令行运行相同的MySQL命令。如果是这样,MySQL命令行工具将包含help
等命令和其他SQL命令的文件作为其默认参数。
创建文件(说myfile.sql
)并编辑内容:
help
select * from mytable
保存文件
将文件传递给mysql:
mysql myfile.sql
无需拨打exit