visualiza valores de variáveis em um script KSH

1

Estou usando um script KSH que cria inúmeras variáveis a partir de código bastante complexo. Qual comando posso colocar no script para visualizar o valor dessas variáveis à medida que elas são criadas? O ECHO seria o comando correto, em uma linha como a variável echo é $ variable_name ?

    
por Jerry Hamilton 04.11.2013 / 20:44

2 respostas

1

Em todas as probabilidades, o que você quer é set -x . Isso ativa o modo de rastreamento: o shell imprime cada comando antes de executá-lo. Coloque isso como a segunda linha do seu script, logo abaixo da linha #! . Se você quiser desativar traços em uma parte do script, use set +x .

Para exibir o valor de uma variável, você pode usar echo "$somevariable" , mas isso nem sempre é bom o suficiente. Certifique-se de não omitir as aspas duplas: sem aspas duplas, o valor da variável é interpretado como uma lista de padrões de caracteres curinga do nome do arquivo em vez de uma string. Existem alguns valores da variável para os quais echo não funciona. Sob o ksh, acredito que a lista exaustiva é -e , -n , -ne e -en , todas as quais são interpretadas como opções para echo . Para evitar essa interpretação, use print ou printf (os dois comandos abaixo são equivalentes):

print -r -- "$somevariable"
printf '%s\n' "$somevariable"

Se o valor da variável contiver espaços em branco ou caracteres não imprimíveis, isso não será exibido na tela. Use a %q escape para printf para imprimir uma representação não ambígua do valor da variável.

printf '$%s is %q\n' somevariable "$somevariable"

Você pode colocar isso em uma função.

trace_variables () {
  typeset _trace_variables__var
  for _trace_variables__var; do
    typeset -n _trace_variables__ref="$_trace_variables__var"
    printf "%s = %q\n" "$_trace_variables__var" "$_trace_variables__ref"
  done
}
…
trace_variables somevariable anothervariable
    
por 06.11.2013 / 01:45
-1

Em ksh, o uso adequado de substituições de variáveis é $ {variable_name}. E sim, você pode fazer um eco no seu terminal ou usá-lo em um comando de teste, ou seja, se [$ {variable_name} - eq $ {mynumber}] etc.

Se você pular usando as chaves, ainda funciona na maior parte do tempo, mas você estará mais propenso a cometer erros. Então, minha sugestão é usá-los em todos os momentos.

    
por 04.11.2013 / 22:18

Tags