加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:47:22 所属栏目:安全 来源:网络整理
导读:我正在尝试使用bash来查找任何字符串“sets”中是否存在短字符串. 例如, 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?
我正在尝试使用bash来查找任何字符串“sets”中是否存在短字符串.
例如,

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,似乎字符串搜索会更有效率.

非常感谢!

解决方法

>最简单的方法,IMO,就是硬编码一堆案例… 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
>否则,请考虑关联数组,请参阅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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读