Bashスクリプトでこのコマンドを実行する方法
#!/bin/bash
docker exec -ti test psql db db
drop schema if exists stack cascade;
delete from partman.part_config;
\q
pwd
cd /folder/name
答え1
スクリプトからプログラム入力に行を送信するには、「here doc」を使用する必要があります。この例では、次に終了します。EOD
#!/bin/bash
docker exec test psql db db << 'EOD'
drop schema if exists stack cascade;
delete from partman.part_config;
\q
EOD
pwd
cd /folder/name
その後、以前のようにスクリプトを実行し続けることができます。
chmod a+rx theScript # Make the script executable
./theScript # Run it
cd
ただし、この最後のスクリプトは呼び出しプロセス(シェル)のディレクトリを変更できないため、実際のスクリプトとして実行する場合はほとんど役に立ちません。
StackExchangeには多くのソリューションがありますが、一般的なアプローチは次のとおりです。cd
現在のプロセスのコンテキスト内で実行する必要があるということです。スクリプトを実行すると、これを行うことができます。指す:
. theScript # Source the script