
職場には、mysqlデータベースサーバーにSQLスクリプトを適用するために使用する必要があるカスタムスクリプトがあり、自由に変更することはできません。カスタムスクリプトのコマンドラインオプションは非常に制限されています。たとえば、デフォルトのデータベース指定は許可されません。つまり、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
の出力ではなく、最終スクリプトにグループに2つのコマンドの出力をパイプしようとしています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