免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 39198 | 回复: 19
打印 上一主题 下一主题

如何判断一个变量是否包含在一个数组里面 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-23 20:22 |只看该作者 |倒序浏览
有一个数组,包含有'item0', 'item1', 'item2'三个字符串。
有一个变量,值为'item0'
请问,如何判断这个数组是否包含了这个变量?
就好比Python的in操作符:

  1. ary = ['item0', 'item1', 'item2']
  2. v = 'item0'
  3. v in ary
复制代码
Bash里面要如何实现呢?我不想使用for循环一个一个去判断,有没有更佳的办法。

论坛徽章:
0
2 [报告]
发表于 2012-04-23 22:23 |只看该作者
if [[ "${ary[@]}" =~ $v ]]

论坛徽章:
0
3 [报告]
发表于 2012-04-23 22:46 |只看该作者
回复 2# 英语盲学linux


    这个用法能不能具体解释一下啊? 我找了很多地方都没找到 ,只找到有awk中有 str ~ /regexp/的用法,谢谢

论坛徽章:
0
4 [报告]
发表于 2012-04-23 22:49 |只看该作者
回复 3# g_programming


    我也是第一次这样用 =~ 左面是输出数组的所有值 =~ 右面是设定变量的值 然后 看右面的值 是否在左面输出的里面 ,如果在就为真,这个好像和awk的一样吧,左面可以完全等于右面,也可以包涵右面但是不能被右面包涵

论坛徽章:
0
5 [报告]
发表于 2012-04-23 22:53 |只看该作者
回复 4# 英语盲学linux


    怎么需要用两个[],一般一个[]就行了的啊? 还是就是不匹配怎么写啊,你上面那种写法是匹配,谢谢

论坛徽章:
0
6 [报告]
发表于 2012-04-23 23:02 |只看该作者
回复 5# g_programming


    if ! [[ "${ary[@]}" =~ $v ]]

[]  [[]] 是有区别的 [[]] 好像更高级一些了 具体的我也记不住了 嘿嘿 我也是菜鸟

论坛徽章:
0
7 [报告]
发表于 2012-04-23 23:03 |只看该作者
回复 6# 英语盲学linux


    比我高级的菜鸟 呵呵 谢了

论坛徽章:
0
8 [报告]
发表于 2012-04-23 23:08 |只看该作者
回复 7# g_programming


客气 我这B网速 打开网页忒慢了 回复的慢 见谅 睡觉了晚安   

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
9 [报告]
发表于 2012-04-23 23:10 |只看该作者
回复 2# 英语盲学linux


    思路学习了
不过这样是不是更好
  1. if echo "${a[@]}" | grep -w "$target" &>/dev/null; then echo "in"; fi
复制代码

论坛徽章:
1
双子座
日期:2013-10-17 00:46:45
10 [报告]
发表于 2012-04-24 00:57 |只看该作者
回复 6# 英语盲学linux


    shell中的各类括号简介:
http://hi.baidu.com/leejun_2005/ ... 26847e8ad4b2df.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP