vars: subscrito fora do intervalo

0

Eu tenho um script csh (eu sei, eu sei) e dentro do meu script eu executo uma consulta sql e então giro a saída em uma variável para usar no meu próximo comando no script.

essencialmente parece com isso:

set vars = 'echo "my sql command"'
set numRows = $#vars
next command '$vars[1]'
.....

Meus registros mostram o erro

Vars : subscript out of range

Alguém pode dizer o que causaria isso e como resolver?

    
por a.smith 07.03.2017 / 14:40

2 respostas

0

Tem certeza de que next command '$vars[1]' é o comando real que você está usando? Para as aspas simples não permitirão que o $ vars seja expandido?

Em qualquer caso, o erro que você está vendo é subscript out of range = > $ vars não contém tantos elementos. Isso significa que há algum erro na sua primeira instrução: set vars = 'echo "my sql command"'

o que $ # vars mostra?

Além disso, a primeira instrução é melhor escrita como: set vars = ('echo "my sql command"')

    
por 07.03.2017 / 15:01
0

Para evitar tais incidentes quando não existe uma variável em uso, que é o resultado da substituição de comando usada anteriormente no código, você pode fazer isso.

( 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]"
    
por 07.03.2017 / 15:49

Tags