# 检查一个元素是否存在于Bash数组中

``arr = ['a','b','c','d'] if 'd' in arr: do your thing else: do something` `

### 7 Solutions collect form web for “检查一个元素是否存在于Bash数组中”

` `if [[ " \${arr[*]} " == *" d "* ]]; then echo "arr contains d" fi` `

` `array_contains () { local seeking=\$1; shift local in=1 for element; do if [[ \$element == \$seeking ]]; then in=0 break fi done return \$in } arr=(abc "de" fg) array_contains "ab" "\${arr[@]}" && echo yes || echo no # no array_contains "de" "\${arr[@]}" && echo yes || echo no # yes` `

` `array_contains2 () { local array="\$1[@]" local seeking=\$2 local in=1 for element in "\${!array}"; do if [[ \$element == \$seeking ]]; then in=0 break fi done return \$in } array_contains2 arr "ab" && echo yes || echo no # no array_contains2 arr "de" && echo yes || echo no # yes` `

` `if [[ \${arr[*]} =~ d ]] then do your thing else do something fi` `

` `if echo \${arr[@]} | grep -q -w "d"; then echo "is in array" else echo "is not in array" fi` `

1）初始化数组`arr`并添加元素

2）设置variables来search`SEARCH_STRING`

3）检查你的数组是否包含元素

` `arr=() arr+=('a') arr+=('b') arr+=('c') SEARCH_STRING='b' if [[ " \${arr[*]} " == *"\$SEARCH_STRING"* ]]; then echo "YES, your arr contains \$SEARCH_STRING" else echo "NO, your arr does not contain \$SEARCH_STRING" fi` `

` `arr=(abcd) temp=`echo \${arr[@]}` temp=( \${temp%%d*} ) index=\${#temp[@]}` `

` `get-index() { Item=\$1 Array="\$2[@]" ArgArray=( \${!Array} ) NewArray=( \${!Array%%\${Item}*} ) Index=\${#NewArray[@]} [[ \${#ArgArray[@]} == \${#NewArray[@]} ]] && echo -1 || echo \$Index }` `

` `get-index d arr` `

` `index=`get-index d arr`` `

FWIW，这是我用的：

` `expr "\${arr[*]}" : ".*\<\$item\>"` `

` `array=("word" "two words") # let's look for "two words"` `

## 使用`grep`和`printf` ：

` `(printf '%s\n' "\${array[@]}" | grep -x -q "two words") && <run_your_if_found_command_here>` `

## `for` ：

` `(for e in "\${array[@]}"; do [[ "\$e" == "two words" ]] && exit 0; done; exit 1) && <run_your_if_found_command_here>` `

• 将输出写入日志文件和控制台
• 我如何使用Ruby进行shell脚本？
• 创build一个文件夹，如果它不存在 - “项目已经存在”
• 在shell中，“2>＆1”是什么意思？
• 如果整行匹配，如何使grep只匹配？
• Bash脚本：While-Loop子壳困境
• shell脚本“for”循环语法
• 如何使用gnu cp命令将文件复制到多个目录
• Shell命令tar目录不包括某些文件/文件夹
• 在Vim中删除换行符
• 文件中最长的行