просмотр значений переменных в скрипте KSH

Я использую скрипт KSH, который создает множество переменных из довольно сложного кода. Какую команду я могу разместить в скрипте для просмотра значения этих переменных по мере их создания? Будет ли ECHO правильной командой, в строке, подобной переменной echo, является $ variable_name ?

  • KornShell говорит мне «неизвестный формат спецификатора»
  • Как распечатать конкатенацию строк в Korn Shell
  • Управление выпуском в командной строке после завершения процесса раздвоения
  • Возвращать длинное целочисленное значение из функции в ksh
  • Использование псевдонимов директивы и имен с помощью Ksh
  • Синтаксис инструкции ksh if
  • KSH, в то время как цикл вызывает проблемы
  • ksh: сохранение вывода команды awk в массиве
  • 2 Solutions collect form web for “просмотр значений переменных в скрипте KSH”

    Вполне вероятно, что вы хотите set -x . Это активирует режим трассировки: оболочка печатает каждую команду перед ее запуском. Поместите это как вторую строку своего скрипта, чуть ниже #! линия. Если вы хотите отключить трассировку в части скрипта, используйте set +x .

    Чтобы отобразить значение переменной, вы можете использовать echo "$somevariable" , но это не всегда будет достаточно хорошим. Не забудьте опустить двойные кавычки: без двойных кавычек значение переменной интерпретируется как список шаблонов подстановочных имен файлов вместо строки. Есть несколько значений переменной, для которых echo не работает. В ksh я считаю, что в исчерпывающем списке есть -e , -n , -ne и -en , все из которых интерпретируются как опции для echo . Чтобы избежать этой интерпретации, используйте вместо этого print или printf (обе приведенные ниже команды эквивалентны):

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

    Если значение переменной содержит завершающие пробелы или непечатаемые символы, это не будет отображаться на экране. Используйте escape-выход %q для печати, чтобы вместо этого напечатать недвусмысленное представление значения переменной.

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

    Вы можете поместить это в функцию.

     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 

    В ksh правильное использование переменных-подстановок – $ {variable_name}. И да, вы можете повторить это на своем терминале или использовать его в тестовой команде, то есть, если [$ {variable_name} – eq $ {mynumber}] и т. Д.

    Если вы пропустите с помощью фигурных скобок, он по-прежнему работает большую часть времени, но вы будете более склонны к ошибкам. Поэтому мое предложение – использовать их в любое время.

    Linux и Unix - лучшая ОС в мире.