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

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

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}] и т. Д.

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

  • Как вызвать скрипт KSH из другого скрипта KSH
  • Запись в следующую строку в разделенном PIPE файле
  • Возвращать длинное целочисленное значение из функции в ksh
  • Управление выпуском в командной строке после завершения процесса раздвоения
  • Ловушка точка (.) Файл не найден ошибок в KSH
  • Одинарные или двойные скобки
  • Как вызвать универсальную функцию без импорта ее файла?
  • Синтаксис инструкции ksh if
  • Interesting Posts

    Xeon Phi swap из tmpfs хоста

    Добавьте пробел или вкладку перед последним символом в каждой строке

    Необходимо запускать partprobe при каждой загрузке

    netcat в сценарии оболочки, дающий недействительное соединение

    Сокращенные длинные опции в командной строке xclip

    Список модулей netfilter, для которых я могу оставить опцию -m и другую подразумеваемую информацию

    Искать только в текстовых файлах, которые не являются исходным кодом

    Как получить полный и точный список смонтированных файловых систем в Linux?

    read -r vs read -r line и IFS

    Проблемы с маршрутизацией для нескольких восходящих линий / провайдеров

    Параметры сценария оболочки передаются в подкоманду

    Параметры команды с дефис или нет

    Cron только время от времени отправляет электронную почту на выходе и ошибки

    Выполняются ли команды в конвейере одновременно?

    Почему «ps -p proc1 proc2 proc3» показывает «-csh», «-tcsh» и «- / bin / tcsh», тогда как «ps -p proc » индивидуально все говорят «tcsh»?

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