Набор сценариев 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
чтобы убедиться, что имя будет правильно экранировано.