Bash 在shell脚本中选择IP
我正在写一个shell脚本来部署我的主节点。 要设置节点,我想选择可用的 主机稍后应侦听的IP地址:Bash 在shell脚本中选择IP,bash,shell,switch-statement,Bash,Shell,Switch Statement,我正在写一个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" ;;
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并在脚本中将其进一步用作变量?您需要匹配数字。差不多 !/usr/bin/env bash PS3='请选择主机应监听的网络:' ips=$hostname-I ips=${ips[@]}“退出” 在${ips[@]}中选择ip;做 案件$ip in *[0-9]* echo您选择的选项$REPLY的值为$ip 打破 ;; 退出回声退出 打破 *回送无效选项>&2;; 以撒 完成
你需要匹配数字。差不多 !/usr/bin/env bash PS3='请选择主机应监听的网络:' ips=$hostname-I ips=${ips[@]}“退出” 在${ips[@]}中选择ip;做 案件$ip in *[0-9]* echo您选择的选项$REPLY的值为$ip 打破 ;; 退出回声退出 打破 *回送无效选项>&2;; 以撒 完成 如何从列表中正确选择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以选择选项,但不将其添加到数组中,因此我将清除以供进一步使用
如何从列表中正确选择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以选择选项,但不将其添加到数组中,因此我将清除以供进一步使用