gnuplot substituição e matrizes de variáveis de shell

4

Eu preciso usar variáveis shell nos meus comandos do gnuplot, para os quais estou usando o estilo do documento here. Eu também preciso usar loops dentro do código do gnuplot. Ambas estas coisas estão funcionando.

Agora - eu quero usar um gnuplot para o índice do loop para acessar uma variável de matriz de shell. É aqui que estou preso o dia todo.

Eu tenho algo assim:

for ((i=0; i<=10; i++))
do
var[$i] = i*10
done

gnuplot<<EOF
do for [j=1:10]{
#need to access ${var[j]} somehow
val=sprintf("${var[%d]", j) ##doesn't work
}
EOF

O acesso individual como $ {var [1]} funciona. Eu suspeito que isso pode exigir o uso de backquotes e / ou expr, mas não tenho certeza.

    
por fhussain 21.10.2012 / 02:57

1 resposta

2

Você está misturando a sintaxe aqui.

O shell verá ${var[%d] , que parece um pouco com uma variável shell - mas não é. Você deveria tentar

cat <<EOF
...
EOF

para depurar e ver exatamente o que está acontecendo. O que eu acho que você quer é algo mais parecido com

for ((i=0; i<=10; i++))
do
var[$i] = i*10
done

gnuplot<<EOF
values="${var[*]}"
do for [j in values] {
#need to access ${var[j]} somehow
val=sprintf("%d", j) ##access part of the array directly
}
EOF
    
por 21.10.2012 / 11:43