我有一个文件,其中包含许多独特项目的列表,对于这个例子,我使用的是用户 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"
最佳答案
如您所想,有很多方法可以做到这一点。一种是使用 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"
关于linux - 更智能、更简洁的方法来匹配 shell 脚本中的输入变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578236/