Bashで実行されているコマンド内でコマンドを実行する方法

Bashで実行されているコマンド内でコマンドを実行する方法

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

関連情報