在工作中,有一个自定义脚本,我必须使用它来将 SQL 脚本应用到 mysql 数据库服务器,并且没有自由修改。自定义脚本的命令行选项非常有限。例如,它不允许指定默认数据库。即我必须use database
切换到正确的目录。
现在我想将create table
脚本应用到数据库。但是,我需要use database
在第一行中有语句才能使create table
脚本成功运行。
如果以下方法有效,我就不需要在这里发布问题:
echo 'use database' | cat create_tables.sql | work_send_command_to_db.sh
我真的希望能够在本地不修改文件的情况下实现目标。这是因为在上面的示例命令中,create_tables.sql
已经签入 git。我不想在每次应用create_tables.sql
脚本后都需要重置存储库。
答案1
您希望将两个命令的输出作为一个组通过管道传输到最终脚本,而不是echo
to的输出cat
。因此,使用{ ...; }
或对这些命令进行分组(...)
:
{ echo 'use database'; cat create_tables.sql; } | work_send_command_to_db.sh
或者:
( echo 'use database'; cat create_tables.sql ) | work_send_command_to_db.sh