0

非常感谢您的帮助!!!

我有以下代码:

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) 与数组中的任何元素匹配,则执行一件事,否则执行其他操作。

谢谢!!!

4

2 回答 2

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
于 2012-10-26T12:44:43.280 回答
0

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

for d in "$dest_include"/* do
    if [[ " ${base[*]} " == *" $(basename "$d") "* ]]; then
        do something with matching directory
    else
        do another thiing
    fi
done
于 2012-10-26T14:42:12.527 回答