簡體   English   中英

shell 腳本中的 Select IP

[英]Select IP in shell script

我正在編寫 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

但是我遇到了“無效選項”。 我怎樣才能從我的列表中正確地 select 和 IP 並在我的腳本中進一步使用它作為變量?

您需要匹配數字。 就像是

#!/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 with the value of $ip"
      break
      ;;
    Quit) echo quit
      break;;
    *) echo Invalid option >&2;;
  esac
done

我怎樣才能從我的列表中正確地 select 和 IP 並在我的腳本中進一步使用它作為變量?

這是一個通用解決方案:將獨立於數組內容工作。

select ip in "${ips[@]}" "Quit"; do
  if [[ $ip = "Quit" ]]; then
    echo "Exiting ..."
    exit
  elif (( REPLY > ${#ips[@]} + 1 )); then
    echo "invalid option $REPLY"
  else
    break
  fi
done

echo "IP: $ip OPTION: $REPLY"

解釋

所選選項不得大於 IPs 數組中的元素數量加上添加的退出選項。

注意:我們將Quit添加到 select 選項中,但未添加到陣列中,因此我將清理以供進一步使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM