나는 csh 스크립트를 가지고 있습니다. (나는 알고 있습니다.) 내 스크립트에서 SQL 쿼리를 실행한 다음 출력을 스크립트의 다음 명령에 사용할 변수로 변환합니다.
본질적으로 다음과 같습니다.
set vars = `echo "my sql command"`
set numRows = $#vars
next command '$vars[1]'
.....
내 로그에 오류가 표시됩니다.
Vars : subscript out of range
누구든지 이 문제의 원인과 해결 방법을 말해 줄 수 있습니까?
답변1
next command '$vars[1]'
이것이 실제로 사용하고 있는 명령이 맞습니까 ? 작은 따옴표는 $vars 확장을 허용하지 않기 때문에?
어쨌든, 보고 있는 오류 subscript out of range
=> $vars에는 그렇게 많은 요소가 포함되어 있지 않습니다. 이는 첫 번째 명령문에 오류가 있음을 의미합니다: set vars = `echo "my sql command"`
$#vars는 무엇을 보여줍니까?
또한 첫 번째 문은 다음과 같이 작성하는 것이 가장 좋습니다: set vars = (`echo "my sql command"`)
답변2
이러한 이벤트가 발생하지 않도록 하려면 사용 중인 변수가 존재하지 않을 때(이전 코드에서 사용된 명령 대체의 결과) 이 작업을 수행할 수 있습니다.
( your_SQL_command > log ) >& /dev/null
if ( $status != 0 || -z log ) then
echo "Some problem running your SQL command...Bailing out."
exit 1
endif
set vars = ( "`cat log`" )
# now safe to use the $vars...
your_next_SQL_command "$vars[1]"