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