首页 > 解决方案 > 以高效的方式重写 bash 脚本以基于服务器运行

问题描述

我正在编写一个脚本,一个逻辑片段是为了让进程在服务器上运行,我有一个函数stat_check需要执行一些步骤。

我想知道,是否有任何有效的方法可以做到这一点并减少行数。

目标 - 想要stat_check基于服务器传递一个唯一变量。我可以在单独的文件和/或下面提到的变量中列出服务器列表,如Servers.

Servers=(flipunix1 flipunix2 flipunix3 flipunix7)
for i in ${Servers[*]}
do
if [ "$SERVER_NAME" == "$i" ];
  then
    stat_check twitter
    stat_check appcreds
    break 2
fi
done

if [ "$SERVER_NAME" == flipunix5 ];
then
stat_check twitter_stats
stat_check relishprogram
fi

标签: bashshell

解决方案


案例陈述在这里是合适的:

case "$SERVER_NAME" in
  flipunix1 | flipunix2 | flipunix3 | flipunix7)
    stat_check twitter
    stat_check appcreds
    ;;
  flipunix5)
    stat_check twitter_stats
    stat_check relishprogram
    ;;
esac

由于您在那里使用 shell 模式,您可以编写

case "$SERVER_NAME" in
  flipunix[1237] ) ...
  flipunix[5]    ) ...

推荐阅读