Bash 脚本使用 ssh 和日期在远程系统上设置坐标世界时
Posted
技术标签:
【中文标题】Bash 脚本使用 ssh 和日期在远程系统上设置坐标世界时【英文标题】:Bash script set Coordinate Universal Time on remote system using ssh and date 【发布时间】:2019-05-09 12:40:48 【问题描述】:我有一个 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
来确保正确转义名称。
【讨论】:
您能否提供$d@Q
和/或printf %q
作为示例解决方案。我真的很想避免禁用 ShellCheck 警告。出现警告是有原因的。
@Kris 您收到一条信息级消息,其wiki page 表示“如果您确实希望在客户端扩展您的字符串,您可以放心地忽略此消息”。大概有很多人写ssh host "echo $HOSTNAME"
并感到困惑。没有评论似乎没有解决方法,这真的太糟糕了。
是的,我正在查看链接中的 Exception 部分:github.com/koalaman/shellcheck/wiki/SC2029 无论如何,我会考虑以不同的方式编写它。我只是不明白$d@Q
是什么意思以及它到底会做什么。以上是关于Bash 脚本使用 ssh 和日期在远程系统上设置坐标世界时的主要内容,如果未能解决你的问题,请参考以下文章