简化网络脚本

时间:2015-09-02 00:15:26

标签: bash shell network-programming

我正在开发一个网络脚本,它将帮助确定哪个网关存在,具体取决于它所在的本地网络。它将回显我给出网关的位置。

有什么方法可以简化脚本吗?我知道有很多方法可以写这个。例如,在为每个网关声明变量后,为每个网关或简单array子句创建元素列表if then。什么是最有效和最简单的?

GW=$(route get default | grep gateway | awk '{ print $2 }')

case ${GW} in
  10.0.1.1
    echo "US"
    ;; 
  10.0.2.2
    echo "CN"
    ;;  
  10.1.2.1 
    echo "UK"
    ;; 
esac 

1 个答案:

答案 0 :(得分:3)

我认为associative array会带来最少的生物传感器。

declare -A ARR  # to make it associative
ARR["10.0.1.1"]="US"
ARR["10.0.2.2"]="CN"
ARR["10.1.2.1"]="UK"

echo ${ARR[$GW]:-"unknown gateway"}  # ":-" (Use Default Values) for missing key

有关详情,请查看man bash