gpt4 book ai didi

string - bash:在多个其他字符串中查找字符串

转载 作者:行者123 更新时间:2023-11-29 09:20:38 25 4
gpt4 key购买 nike

我正在尝试使用 bash 查找任何字符串“集合”中是否存在短字符串。例如,

FRUIT="apple banana kiwi melon"
VEGETABLE="radish lettuce potato"
COLOR="blue red yellow green brown"

MY_CHOICE="kiwi"
MY_CHOICE_GROUP="?"

如何将 MY_CHOICE_GROUP 设置为 FRUIT

我尝试使用 this StackOverflow solution , 但它仅适用于单个字符串集。

最初,我使用数组将选项存储在一个集合中,但是 given the way bash handles iteration over arrays ,似乎字符串搜索会更有效率。

非常感谢!

最佳答案

  1. 在我看来,最简单的方法就是硬编码一堆 case...esac 标签。

    #!/bin/bash
    function lookup()
    {
    case "$1" in
    apple|banana|kiwi|melon)
    echo "FRUIT"
    ;;

    radish|lettuce|potato)
    echo "VEGETABLE"
    ;;

    blue|red|yellow|green|brown)
    echo "COLOR"
    ;;
    esac
    }

    MY_CHOICE="kiwi"
    MY_CHOICE_GROUP=$(lookup "$MY_CHOICE")

    echo $MY_CHOICE: $MY_CHOICE_GROUP

    查看 live on ideone

  2. 要不,考虑关联数组,看吧 live on ideone :

    #!/bin/bash
    declare -A groups

    groups["apple"]="FRUIT"
    groups["banana"]="FRUIT"
    groups["kiwi"]="FRUIT"
    groups["melon"]="FRUIT"

    groups["radish"]="VEGETABLE"
    groups["lettuce"]="VEGETABLE"
    groups["potato"]="VEGETABLE"

    groups["blue"]="COLOR"
    groups["red"]="COLOR"
    groups["yellow"]="COLOR"
    groups["green"]="COLOR"
    groups["brown"]="COLOR"

    MY_CHOICE="kiwi"
    MY_CHOICE_GROUP=${groups[$MY_CHOICE]}

    echo $MY_CHOICE: $MY_CHOICE_GROUP

关于string - bash:在多个其他字符串中查找字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com