Shell / Korn脚本 - 根据列表中的主机名设置变量

时间:2017-05-04 06:51:00

标签: shell sh ksh

我需要编写一个korn脚本,根据运行脚本的主机,将设置一个部署目录(所以说5个主机将软件部署到目录一,另外五个主机部署到目录2)。

我怎么能这样做 - 我想避免像下面这样的每个主机的if条件

IF [hostname = host1] then $INSTALL_DIR=Dir1
ELSE IF [hostname = host2] then $INSTALL_DIR=Dir1

并且希望有一个说明Directory1Hosts和Directory2Hosts的列表,其中包含对每个目录有效的所有主机,然后我只检查脚本运行的主机是否在我的Directory1Hosts或Directory2Hosts中(所以只有两个IF条件而不是10)。

感谢您的帮助 - 一直在努力寻找如何有效地执行包含条款。

2 个答案:

答案 0 :(得分:1)

使用case声明:

case $hostname in
   host1) INSTALL_DIR=DIR1 ;;
   host2) INSTALL_DIR=DIR2 ;;
esac

或使用关联数组

install_dirs=([host1]=DIR1 [host2]=DIR2)

...

INSTALL_DIR=${install_dirs[$hostname]}

答案 1 :(得分:0)

当您想要配置和代码分开时,您可以创建一个配置目录:每个安装目录有一个主机文件。

INSTALL_DIR=$(grep -Flx "${hostname}" installdirs/* | cut -d"/" -f2)

使用这些文件,您的代码可以是

Ctrl+Q