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 #!/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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |