在ssh shell脚本中检查docker版本

我在一个shell脚本中运行一个服务器并运行一些docker命令。 但是,在Docker 1.7版中,有些命令会失败。 我有一个1.7的修复,但如果我一直使用它,运行shell脚本需要更长的时间。 所以我想检查一下这个版本,如果它是1.7回退到较慢的脚本。 否则运行好的快速版本。

想像的东西

if ssh -l root $1 "docker -v === '1.7.*'" then echo "Docker version 1.7!" else echo "Docker version not 1.7!" fi 

显然这是行不通的。 有任何想法吗?

您可以使用:

 if [[ $(ssh -l root "$1" 'docker -v') == *" 1.7."* ]]; then echo 'Docker version 1.7!' else echo 'Docker version not 1.7!' fi 
  • 你需要使用命令replace$(...)来输出整个ssh命令
  • Shell支持===而不是===
  • 保持引号之外的glob字符

Docker有一个-H选项,允许你指向另一个主机上的docker引擎。 使用此来获取版本并确定要运行的内容。

 if [[ $(docker -H my.host version | grep '1.7') ]]; then Thing 1 else Thing 2 fi