You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本如何检查数组中是否存在重复的用户输入?

修正后的Bash脚本(禁止重复输入)

原脚本的核心问题是把ARRAY_ITEMS当作字符串拼接而非数组存储,且缺少重复输入检测逻辑。以下是修改后的完整脚本:

#!/bin/bash

# 初始化空数组
ARRAY_ITEMS=()

while true; do 
    printf "\n    A   B   C\n"
    # 打印当前数组内的所有元素
    echo -e "This is the array: ${ARRAY_ITEMS[*]} "
    
    read -p "Input: " INPUT

    case "$INPUT" in 
        A|B|C)
            # 检测输入字符是否已存在于数组中
            if [[ " ${ARRAY_ITEMS[@]} " =~ " $INPUT " ]]; then
                echo "ERROR. $INPUT is already selected."
            else
                echo "Adding $INPUT to array."
                ARRAY_ITEMS+=("$INPUT")
            fi
            ;;
        *) 
            echo -e "Whoopsy! Invalid input." 
            ;; 
    esac
done

关键修改说明:

  1. 数组规范化:将ARRAY_ITEMS初始化为空数组ARRAY_ITEMS=(),让每个输入字符作为独立元素存储,而非拼接成字符串,便于重复检测。
  2. 重复检测逻辑:通过[[ " ${ARRAY_ITEMS[@]} " =~ " $INPUT " ]]判断输入是否已存在于数组中:
    • 存在则输出指定错误提示
    • 不存在则将字符加入数组并打印成功提示
  3. 代码简化:将A/B/C的分支合并为A|B|C,减少冗余代码;移除原脚本中提前定义的无效var1变量,直接按需输出提示信息。

内容的提问来源于stack exchange,提问作者user20426723

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 08:01:05