首页 > 解决方案 > Bash 脚本使用 ssh 和日期在远程系统上设置坐标世界时

问题描述

我有一个尝试在另一台机器上同步时间的 bash 脚本。这不是我的源代码,但是当我重构 bash 脚本时,我试图让它通过 ShellCheck。

它的源代码如下所示:

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

ShellCheck警告为SC2029,并指出“请注意,未转义,这将在客户端扩展。” 事实上,我不想逃避这一点。

是否有另一种方法可以消除此警告并执行此步骤?

标签: bashdatesshshellcheck

解决方案


当您确定警告不适用于您时,您可以通过# 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确保名称将被正确转义。


推荐阅读