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