Надежный способ убедиться, что переменная хранит / отображает все символы? - PullRequest
2 голосов
/ 10 февраля 2020

Я сделал небольшую функцию, которую использую при тестировании сценария.

Однако я не уверен, что она отображает все символы, такие как пробелы, кавычки и тому подобное.

Это функция:

dbug () {

#  showing result during debug
zenity  --width 600 --height 100 --error --text="$@" --title="debug display"
}

И в любом месте скрипта, где я хочу проверить некоторые переменные, я просто добавляю строку: dbug $variable, и всплывающее окно покажет результат ..

Вопрос в том, будет ли "$ @" отображать все символы из команды "call", или это что-то более причудливое необходимо?

1 Ответ

3 голосов
/ 10 февраля 2020

Одна реализация, способная однозначно отображать непечатаемые символы:

dbug() {
  local text_q
  printf -v text_q '%q ' "$@"
  zenity --width=600 --height=100 --text="$text_q" --title="debug display"
}

Это преобразует вкладки в $'\t', новые строки в $'\n'; будет отображать пробелы в кавычках или после обратной косой черты; удвоит обратную косую черту, которая должна быть буквальной (если не отображать их в одинарных кавычках); и в противном случае будет гарантировать, что данные отображаются в формате, в котором, если они будут возвращены в оболочку в качестве исходного кода, получит литеральные значения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...