如何在不修改文件的情况下将值添加到 cat 命令输出?

如何在不修改文件的情况下将值添加到 cat 命令输出?

在工作中,有一个自定义脚本,我必须使用它来将 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

您希望将两个命令的输出作为一个组通过管道传输到最终脚本,而不是echoto的输出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

相关内容