쉘 스크립트의 다양한 변수에 대해 명령 실행

쉘 스크립트의 다양한 변수에 대해 명령 실행

그래서 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

귀하의 요청이 불분명합니다. 스크립트를 수정할 수 있나요? 그렇지 않은 경우 XY변수에 명시적으로 의존하는 경우 임시/루프 변수가 필요합니다. 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.XY

관련 정보