Select 循环 - 使用输入文件读取动态输出
Select Loop - Dynamic Output using input file to read
很棒的论坛!!我会尽量保持简短以达到目的。我一直在尝试了解是否可以读取一个文件,该文件在每一行都有详细信息列表。例如:
文件名:ALIAS_LIST.config
ALIAS1 CLUSTER1
ALIAS2 CLUSTER2
ALIAS3 CLUSTER3
QUIT
基于此,我希望我能够将文件列表作为每个新行的数组来读取,并使用 Select 循环生成动态输出,我已经为我的菜单做得很好.我的脚本部分是任务的实际操作。这是我试图实现的示例:
# *********************************
# Sourcing the Alias Queue file to use
# *********************************
ALIAS_FILE="/var/ALIAS_LIST.config"
if [ -f "$ALIAS_FILE" ]
then
select alias_select in "${ALIAS_FILE[@]}"
do
echo "well done"
done
else
echo "*********************************"
echo " Exit
echo "*********************************"
exit 0
fi
基于从文件到数组的输出 select 菜单,我将使用标准 PS3 来捕获和验证使用输入并采取必要的步骤继续前进。
根据更新,这完全符合我的预期。如果我们依次尝试验证用户输入以提供有用的异常处理,该怎么办?这是我根据您的输入尝试实现的目标:
更新版本(工作):
mapfile -t arr < "/var/ALIAS_LIST.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 }')
OPTION=$(echo "${alias_select}" | awk '{print }')
echo "$ALIAS"
echo "$OPTION"
fi
done
您可以只使用此脚本从文件中读取 select
个菜单项:
mapfile -t arr </var/ALIAS_LIST.config
select alias_select in "${arr[@]}"; do
if [[ -z "$alias_select" ]]; then
echo "Invalid Choice"
elif [[ $alias_select == "QUIT" ]]; then
break
else
echo "You selected: $alias_select"
fi
done
很棒的论坛!!我会尽量保持简短以达到目的。我一直在尝试了解是否可以读取一个文件,该文件在每一行都有详细信息列表。例如:
文件名:ALIAS_LIST.config
ALIAS1 CLUSTER1
ALIAS2 CLUSTER2
ALIAS3 CLUSTER3
QUIT
基于此,我希望我能够将文件列表作为每个新行的数组来读取,并使用 Select 循环生成动态输出,我已经为我的菜单做得很好.我的脚本部分是任务的实际操作。这是我试图实现的示例:
# *********************************
# Sourcing the Alias Queue file to use
# *********************************
ALIAS_FILE="/var/ALIAS_LIST.config"
if [ -f "$ALIAS_FILE" ]
then
select alias_select in "${ALIAS_FILE[@]}"
do
echo "well done"
done
else
echo "*********************************"
echo " Exit
echo "*********************************"
exit 0
fi
基于从文件到数组的输出 select 菜单,我将使用标准 PS3 来捕获和验证使用输入并采取必要的步骤继续前进。
根据更新,这完全符合我的预期。如果我们依次尝试验证用户输入以提供有用的异常处理,该怎么办?这是我根据您的输入尝试实现的目标:
更新版本(工作):
mapfile -t arr < "/var/ALIAS_LIST.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 }')
OPTION=$(echo "${alias_select}" | awk '{print }')
echo "$ALIAS"
echo "$OPTION"
fi
done
您可以只使用此脚本从文件中读取 select
个菜单项:
mapfile -t arr </var/ALIAS_LIST.config
select alias_select in "${arr[@]}"; do
if [[ -z "$alias_select" ]]; then
echo "Invalid Choice"
elif [[ $alias_select == "QUIT" ]]; then
break
else
echo "You selected: $alias_select"
fi
done