我有一个包含许多唯一项目列表的文件,对于此示例,我使用的是用户ID。我的脚本的起始部分应该向运行脚本的用户显示列表,并允许他们选择其中一个ID。然后,脚本应交叉检查用户对原始文件所做的选择,如果匹配,则应提供建议匹配的消息并继续执行脚本。如果不匹配,脚本应通知用户并退出。
我当前的脚本可以做到这一点,但我想知道是否有任何方法可以使它更聪明/更精简,也许使用数组?当前脚本:
这是我在本网站上发表的第一篇文章,所以对于在发布过程中发生的任何错误,我深表歉意。
FILE=testfile
IDLIST="$(awk '{print $1}' $FILE)"
echo "$IDLIST"
echo "\nSelect one of the options"
read input
OUTPUT="$(for i in $IDLIST
do
if [[ $i = $input ]]
then
echo "Matched."
fi
done)"
if [[ -z $OUTPUT ]]
then
echo "Invalid choice."
exit 0
else
ID=$input
fi
echo "It is a match, continuing with script"
答案 0 :(得分:1)
你可以想象,有很多方法可以做到这一点。一个是使用select
代替:
PS3="Select an ID: "
select id in $(cut -d ' ' -f 1 testfile)
do
[[ -z $id ]] && echo "Pick a number" || break
done
echo "You selected $id"