在shell脚本中选择IP

问题描述 投票:0回答:2

我正在编写Shell脚本以部署我的主节点。要设置节点,我想选择一个可用的节点主服务器稍后应监听的IP地址:

PS3='Please select a network the master should listen onto: '
ips=($(hostname -I))
select ip in "${ips[@]}"
do
    case $ip in
        "Option 1")
            echo "you chose choice 1"
            ;;
        "Quit")
            break
            ;;
        *) echo "invalid option $REPLY";;
    esac
done

但是我遇到了“无效选项”。如何从列表中正确选择IP并将其作为脚本中的变量进一步使用?

bash shell switch-statement
2个回答
2
投票

您需要匹配数字。像

#!/usr/bin/env bash

PS3='Please select a network the master should listen onto: '
ips=($(hostname -I))
ips=("${ips[@]}" 'Quit')
select ip in "${ips[@]}"; do
  case $ip in
    *[0-9]*)
      echo "you chose choice "$REPLY"
      break
      ;;
    Quit) echo quit
      break;;
    *) echo Invalid option >&2;;
  esac
done

0
投票

我如何从列表中正确选择IP并将其进一步用作我的脚本变量?

尝试一下:

select ip in "${ips[@]}"; do
  if (( REPLY > ${#ips[@]} )); then
    echo "invalid option $REPLY"
  else
    break
  fi
done

echo "IP: $ip OPTION: $REPLY"

说明

所选选项不得大于IP数组中的元素数。

© www.soinside.com 2019 - 2024. All rights reserved.