【发布时间】:2015-10-04 02:09:09
【问题描述】:
很棒的论坛!!我会尽量保持简短以直截了当。我一直在尝试了解是否可以读取每个新行都有详细信息列表的文件。例如:
文件名:ALIAS_LIST.config
ALIAS1 CLUSTER1
ALIAS2 CLUSTER2
ALIAS3 CLUSTER3
QUIT
基于此,我希望能够将文件列表作为每个新行的数组读取,并使用选择循环生成动态输出,我在菜单中做得很好。我取决于我的脚本的一部分,即任务的实际操作。这是我试图实现的一个示例:
# *********************************
# 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
基于从文件到数组选择菜单的输出,我将使用标准 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 $1}')
OPTION=$(echo "${alias_select}" | awk '{print $2}')
echo "$ALIAS"
echo "$OPTION"
fi
done
【问题讨论】:
标签: linux bash shell scripting aix