vars: 아래 첨자가 범위를 벗어났습니다.

vars: 아래 첨자가 범위를 벗어났습니다.

나는 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]"

관련 정보