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

관련 정보