确定数组中是否存在值

时间:2012-10-26 12:40:34

标签: bash

非常感谢您的帮助!!!

我有以下代码:

base[0]='coordfinder'
base[1]='editor_and_options'
base[2]='global'
base[3]='gyro'
base[4]='movecamera'
base[5]='orientation'
base[6]='sa'

for d in $dest_include/*; do
    if [ $d == "${base[@]}" ]; then
        echo $plugin='y' >> vt_conf.sh
    else
        plugin=$(basename $d)
        echo $plugin'?'
        read $plugin
        echo $plugin=${!plugin} >> vt_conf.sh
    fi
done

它不起作用,但它是一个很好的起点。 基本上不起作用的是if循环。我刚刚做了,因为我不知道怎么做。

我想做以下事情:

循环遍历$ dest_include文件夹的内容。 如果任何forlders($ d)匹配数组中的任何元素做一件事,否则做其他事情。

感谢!!!

2 个答案:

答案 0 :(得分:1)

通过内部循环迭代,如果找到匹配则设置标记。

base=( coordfinder editor_and_options global gyro movecamera orientation sa )
for d in "$dest_include/"*; do
  found_match=0
  for i in "${base[@]}"; do
    [[ $d = "$i" ]] && { found_match=1; break; }
  done
  if (( found_match )) ; then
    ...do one thing...
  else
    ...do the other...
  fi
done

答案 1 :(得分:0)

你也可以打开检查:将整个数组用作以空格分隔的字符串,并尝试匹配其中的空格分隔的单词。

for d in "$dest_include"/* do
    if [[ " ${base[*]} " == *" $(basename "$d") "* ]]; then
        do something with matching directory
    else
        do another thiing
    fi
done