Bash를 입력 echo $(db2 -x "select count(*) from dict_area")
하면 446
.
하지만 을 입력하면 echo $(db2 -x "select count(*) from dict_area";db2 -x "select count(*) from dict_area")
다음과 같은 결과가 나타납니다.
SQL1024N A database connection does not exist. SQLSTATE=08003 SQL1024N A database connection does not exist. SQLSTATE=08003
이것은 내 직업과 아무 관련이 없습니다. 나는 단지 이것이 어떻게 일어 났는지 알고 싶습니다. 도와주세요?
답변1
$()에서 실행하면 하위 쉘이 호출되며 새 하위 쉘은 현재 쉘의 연결을 사용할 수 없습니다. 이것이 바로 이러한 오류가 발생하는 이유입니다.
서브셸에서 작업을 실행하려면 매번 연결을 설정하세요. 또는 출력을 파일에 쓴 다음 출력을 처리하여 현재 파일에서 실행합니다.
echo $(db2 connect to sample > /dev/null; db2 -x "select count(*) from dict_area")
또는
db2 connect to sample
db2 -x "select count(*) from dict_area" > /tmp/output
echo $(cat output)