尝试根据用户验证的菜单输出来验证 PS3 输入
Trying to validate PS3 input based on menu output for user validation
如果我想在用户没有选择重新打印菜单的选项的情况下从用户键盘输入验证空值 return 如何实现?如果做出无效选择以清除屏幕/重新打印菜单但确保错误消息仍然可见?也许捕获 return 代码作为退出的一部分并基于它提供错误?
文件 ALIAS_FILE.config 包含这些值:
ALIAS1 CLUSTER1
ALIAS2 CLUSTER2
ALIAS3 CLUSTER3
QUIT
脚本:
mapfile -t arr < "/var/ALIAS_FILE.config"
select alias_select in "${arr[@]}"
do
if [[ -z "$alias_select" ]]
then
echo
echo "Invalid Choice"
echo
elif [[ $alias_select == "QUIT" ]]
then
break
else
echo
echo "You selected: $alias_select"
echo
ALIAS=$(echo "${alias_select}" | awk '{print }')
CLUSTER=$(echo "${alias_select}" | awk '{print }')
echo "$ALIAS"
echo "$CLUSTER"
fi
done
只要你有你的文件(/var/ALIAS_FILE.config
),你应该可以随时显示菜单,你也可以通过mapfile
访问arr中的值这里是一个快速尝试, 以及一些建议:
- 使用
echo -e
或更好的事件(并推荐)printf
- 清屏,可以使用VT100转义码
printf "3c"
- 使用bash string manipulation
更新脚本:
#!/bin/bash
mapfile -t arr< "/var/ALIAS_FILE.config"
print_menu(){
for (( i=0; i<${#arr[@]}; i++ ));
do
echo $i")" ${arr[$i]}
done
}
printf "3c"
select alias_select in "${arr[@]}"
do
printf "3c"
if [[ -z "$alias_select" ]]
then
echo -e "\nInvalid Choice\n"
print_menu
elif [[ $alias_select == "QUIT" ]]
then
break
else
echo -e "\nYou selected: $alias_select\n"
echo -e "${alias_select// *}\n${alias_select##* }"
fi
done
如果我想在用户没有选择重新打印菜单的选项的情况下从用户键盘输入验证空值 return 如何实现?如果做出无效选择以清除屏幕/重新打印菜单但确保错误消息仍然可见?也许捕获 return 代码作为退出的一部分并基于它提供错误?
文件 ALIAS_FILE.config 包含这些值:
ALIAS1 CLUSTER1
ALIAS2 CLUSTER2
ALIAS3 CLUSTER3
QUIT
脚本:
mapfile -t arr < "/var/ALIAS_FILE.config"
select alias_select in "${arr[@]}"
do
if [[ -z "$alias_select" ]]
then
echo
echo "Invalid Choice"
echo
elif [[ $alias_select == "QUIT" ]]
then
break
else
echo
echo "You selected: $alias_select"
echo
ALIAS=$(echo "${alias_select}" | awk '{print }')
CLUSTER=$(echo "${alias_select}" | awk '{print }')
echo "$ALIAS"
echo "$CLUSTER"
fi
done
只要你有你的文件(/var/ALIAS_FILE.config
),你应该可以随时显示菜单,你也可以通过mapfile
访问arr中的值这里是一个快速尝试, 以及一些建议:
- 使用
echo -e
或更好的事件(并推荐)printf
- 清屏,可以使用VT100转义码
printf "3c"
- 使用bash string manipulation
更新脚本:
#!/bin/bash
mapfile -t arr< "/var/ALIAS_FILE.config"
print_menu(){
for (( i=0; i<${#arr[@]}; i++ ));
do
echo $i")" ${arr[$i]}
done
}
printf "3c"
select alias_select in "${arr[@]}"
do
printf "3c"
if [[ -z "$alias_select" ]]
then
echo -e "\nInvalid Choice\n"
print_menu
elif [[ $alias_select == "QUIT" ]]
then
break
else
echo -e "\nYou selected: $alias_select\n"
echo -e "${alias_select// *}\n${alias_select##* }"
fi
done