2011-06-15 80 views
0

请帮助我,使下面的代码更易读或(提出任何优化)推荐的优化代码给定嵌套循环

@for i in $(LIST_A); do \ 
      for j in $(LIST_B); do\ 
      if [ "$$i" = "$$j" ] ;then\ 
      echo " A match found ";\     
      else\ 
      echo "Not found any corresponding String in LIST_B ";\ 
        fi; \ 
      done\ 
    done; 
+0

你刚刚发现两组之间的交集?有很多更好的解决方案:http://www.catonmat.net/download/setops.txt – Marcin 2011-07-05 13:39:05

回答

0

不知道什么shell语言是你的问题,但这里有一个光辉的版本你也许可以利用...

#!/bin/ksh 

LIST_A="a b c d e" 
LIST_B="d f g" 

got_match="0" 

for item_A in $LIST_A 
do 
    #echo $item_A 
    for item_B in $LIST_B 
    do 
     #echo $item_A " " $item_B 
     if [ "$item_A" == "$item_B" ] 
     then 
      echo "matched " $item_A 
      got_match="1" 
      break 2; 
     fi 
    done 
done 

if [ "$got_match" == "0" ] 
then 
    echo "no match" 
fi 

的“破2”失控两个循环的(假定这就是你想要的)

” ...使更具可读性.. 。“,也许是一种风格兴,但我的建议是:

  1. 使用有意义的名称,而不是在同一行i和j
  2. 避免多个语句(避免使用;)
  3. 缩进正常
  4. 评论表明的意图,如果是不明显

另一个建议:在未来的问题中提供工作版本/代码片段,以便其他人可以运行测试,并指出它是什么语言。