Набор сценариев Bash Coordinate Universal Time на удаленной системе с использованием SSH и даты

У меня есть скрипт bash, который пытается синхронизировать время на другом компьютере. Это не мой исходный код, но, поскольку я занимаюсь рефакторингом bash-скрипта, я пытаюсь заставить его пройти ShellCheck.

Исходный код для него выглядит примерно так:

d=$(date -u +%m%d%H%M%Y.%S) ssh decs@host-zc1 "sudo date -u ${d}"

Предупреждение ShellCheck - SC2029 и гласит: "Обратите внимание, что без экранирования это расширяется на стороне клиента". На самом деле я не хочу избегать этого.

Есть ли другой способ избавиться от этого предупреждения и все же выполнить этот шаг?

1 ответ

Когда вы определили, что предупреждение не относится к вам, вы можете игнорировать его с помощью # shellcheck disable комментарий:

d=$(date -u +%m%d%H%M%Y.%S)
# shellcheck disable=SC2029
ssh decs@host-zc1 "sudo date -u ${d@Q}"

Хотя вы действительно должны использовать ${d@Q} или же printf %q чтобы убедиться, что имя будет правильно экранировано.

Другие вопросы по тегам