
그래서 SQL 쿼리에서 반환된 첫 번째 열의 값을 변수( var
)에 저장합니다. SQL 쿼리는 여러 행을 반환하고 나중에 이 값이 명령에 사용되므로 배열 유형이어야 합니다.
쉘 스크립트에서 다른 변수를 사용하여 동일한 명령을 순차적으로 실행하는 방법을 모르겠습니다.
var=`app/oracle/product/10.2.0/bin/sqlplus -s user/passwd<< !EOF!
set pages 0 echo off feed off timing off
select entity_name,uid,set_date from table_name;
exit
!EOF!`
실행할 명령은 다음과 같습니다.
X=$var Y=`date` ./test.sh
답변1
귀하의 요청이 불분명합니다. 스크립트를 수정할 수 있나요? 그렇지 않은 경우 X
및 Y
변수에 명시적으로 의존하는 경우 임시/루프 변수가 필요합니다. test.sh
각 배열 요소에 대해 실행 하려면 for
루프를 시도해 보세요(요소에 공백 문자가 없는 경우).
for TMP in "${var[@]}"; do X="$TMP" Y=$(date) ./test.sh; done
답변2
데이터베이스 쿼리의 출력을 변수에 저장할 필요가 없습니다.
app/oracle/product/10.2.0/bin/sqlplus -s user/passwd <<END_SQL | while IFS= read -r thing; do X="$thing" Y="$(date)" ./test.sh; done
set pages 0 echo off feed off timing off
select entity_name,uid,set_date from table_name;
exit
END_SQL
이는 명령의 출력을 읽고 각 줄에 대해 한 번씩 스크립트를 호출하여 프로세스의 환경 변수 값을 설정합니다 sqlplus
.X
Y