有没有办法在没有循环的情况下使用 bash 在数组中搜索相同性?

马修·布鲁纳

所以我有一个字符串数组和另一个字符串变量本身,我想做一个过程,当变量是数组的元素之一时。可以写一个 IF 行,而不用循环检查所有元素吗?

雷诺·帕卡莱

Bash 现在支持关联数组,即键是字符串的数组:

declare -A my_associative_array

因此,您可以将经典数组转换为关联数组,并通过简单的方式访问您要查找的条目:

my_string="foo bar"
my_associative_array["$my_string"]="baz cux"
echo "${my_associative_array[$my_string]}"
echo "${my_associative_array[foo bar]}"

并测试密钥的存在:

if [ "${my_associative_array[$my_string]:+1}" ]; then
  echo yes;
else
  echo no;
fi

从 bash 手册:

   ${parameter:+word}
          Use Alternate Value.  If parameter is null or unset, nothing
          is substituted, otherwise the expansion of word is substituted.

因此,如果键$my_string为 null 或未设置,则${my_associative_array[$my_string]:+1}扩展为空,否则扩展为1. 其余的只是ifbash 语句与test( [])结合的经典用法

if [ 1 ]; then echo true; else echo false; fi

打印true时:

if [ ]; then echo true; else echo false; fi

打印false如果您更喜欢将空条目视为任何其他现有条目,只需省略冒号:

if [ "${my_associative_array[$my_string]+1}" ]; then
  echo yes;
else
  echo no;
fi

从 bash 手册:

          Omitting the colon results in a test only for a parameter
          that is unset.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法在不使用pairs()的情况下循环遍历一个数组?

来自分类Dev

有没有办法在没有 ID 的情况下获取 SELECT TAG 中的所有选项值?

来自分类Dev

有没有办法在不使用.htaccess文件的情况下省略url中的php文件名?

来自分类Dev

有没有办法在不使用void指针的情况下返回C函数中的任何类型?

来自分类Dev

在Angular JS中,有没有办法在不使用scope.watch的情况下监视DOM的更改?

来自分类Dev

有没有办法在不使用python中的sort()的情况下对基于数字的数字进行排序?

来自分类Dev

有没有办法在不使用Haskell中的return的情况下实现此.csv阅读器?

来自分类Dev

PHP - 有没有办法在没有 for 循环的情况下通过字符串/文件系统函数运行数组值?

来自分类Dev

有没有办法在没有ul .. li的情况下从列表中插入这些标志?

来自分类Dev

有没有办法使用 ip 地址作为索引在 bash 中声明关联数组?

来自分类Dev

有没有办法在不运行 ~/.bashrc 脚本的情况下打开 Windows 10 Ubuntu bash?

来自分类Dev

Bash,有没有办法获得与双引号相同的功能而不使用双引号

来自分类Dev

在 bash 中,有没有办法在变量中替换或嵌套变量?

来自分类Dev

有没有办法使用正则表达式来自动填充bash中的文件名?

来自分类Dev

有没有办法从bash函数调用中强制回显命令行?

来自分类Dev

有没有办法从bash函数调用中强制回显命令行?

来自分类Dev

有没有办法在ssh中运行本地bash函数

来自分类Dev

有没有办法从bash中的函数内部获取脚本的位置参数?

来自分类Dev

有没有办法在bash文件中包含一行ksh特定代码?

来自分类Dev

有没有办法对bash中括号内的数字进行操作?

来自分类Dev

bash中的“继承”;有没有办法在覆盖函数中调用super(没有eval)?

来自分类Dev

有没有办法在不键入array [somenumber]的情况下获取数组内部的特定对象?

来自分类Dev

有没有办法在不使用另一个for循环的情况下将具有相同值的多个项添加到字典的列表中?

来自分类Dev

有没有办法在不修改基类的情况下防止派生类中的内存泄漏?

来自分类Dev

有没有办法在不向客户端公开当前计数的情况下增加Firebase中的计数?

来自分类Dev

有没有办法在保持原始顺序的情况下删除列表中的重复项?

来自分类Dev

有没有办法在不锁定帐户的情况下顺利处理 CALDAV 场景中的密码更改?

来自分类Dev

有没有办法在不创建对象实例的情况下访问类中的函数(VB)?

来自分类Dev

有没有办法在MS SQL中没有ORDER BY子句的情况下进行有序输出

Related 相关文章

  1. 1

    有没有办法在不使用pairs()的情况下循环遍历一个数组?

  2. 2

    有没有办法在没有 ID 的情况下获取 SELECT TAG 中的所有选项值?

  3. 3

    有没有办法在不使用.htaccess文件的情况下省略url中的php文件名?

  4. 4

    有没有办法在不使用void指针的情况下返回C函数中的任何类型?

  5. 5

    在Angular JS中,有没有办法在不使用scope.watch的情况下监视DOM的更改?

  6. 6

    有没有办法在不使用python中的sort()的情况下对基于数字的数字进行排序?

  7. 7

    有没有办法在不使用Haskell中的return的情况下实现此.csv阅读器?

  8. 8

    PHP - 有没有办法在没有 for 循环的情况下通过字符串/文件系统函数运行数组值?

  9. 9

    有没有办法在没有ul .. li的情况下从列表中插入这些标志?

  10. 10

    有没有办法使用 ip 地址作为索引在 bash 中声明关联数组?

  11. 11

    有没有办法在不运行 ~/.bashrc 脚本的情况下打开 Windows 10 Ubuntu bash?

  12. 12

    Bash,有没有办法获得与双引号相同的功能而不使用双引号

  13. 13

    在 bash 中,有没有办法在变量中替换或嵌套变量?

  14. 14

    有没有办法使用正则表达式来自动填充bash中的文件名?

  15. 15

    有没有办法从bash函数调用中强制回显命令行?

  16. 16

    有没有办法从bash函数调用中强制回显命令行?

  17. 17

    有没有办法在ssh中运行本地bash函数

  18. 18

    有没有办法从bash中的函数内部获取脚本的位置参数?

  19. 19

    有没有办法在bash文件中包含一行ksh特定代码?

  20. 20

    有没有办法对bash中括号内的数字进行操作?

  21. 21

    bash中的“继承”;有没有办法在覆盖函数中调用super(没有eval)?

  22. 22

    有没有办法在不键入array [somenumber]的情况下获取数组内部的特定对象?

  23. 23

    有没有办法在不使用另一个for循环的情况下将具有相同值的多个项添加到字典的列表中?

  24. 24

    有没有办法在不修改基类的情况下防止派生类中的内存泄漏?

  25. 25

    有没有办法在不向客户端公开当前计数的情况下增加Firebase中的计数?

  26. 26

    有没有办法在保持原始顺序的情况下删除列表中的重复项?

  27. 27

    有没有办法在不锁定帐户的情况下顺利处理 CALDAV 场景中的密码更改?

  28. 28

    有没有办法在不创建对象实例的情况下访问类中的函数(VB)?

  29. 29

    有没有办法在MS SQL中没有ORDER BY子句的情况下进行有序输出

热门标签

归档