使用bash编程的双循环

时间:2014-10-14 15:20:19

标签: linux bash ubuntu

我想用bash编程做这样的事情

for file_x in file1, file2, file3, etc...  
  for file_y in file1, file2, file3, etc...  
    if file_y != file_x
      do something 

任何提示如何去做?

2 个答案:

答案 0 :(得分:0)

#!/bin/bash

for file_x in "file1" "file2" "file3"
do  
  for file_y in "file1" "file2" "file3"
  do
    if cmp -q "$file_y" "$file_x"
    then
         echo "$file_y $file_x are equal"
    else
         echo "$file_y $file_x are not equal"
    fi
  done
done

答案 1 :(得分:0)

如果你正在进行NxN比较,那么仅在内循环中操作列表的尾部是有意义的。像

这样的东西
#!/bin/bash

files=(foo bar baz quux)

for ((i=0; i<${#files[@]}-1; i++)); do
  for ((j=i+1; j<${#files[@]}; j++)); do
    maybe=""
    cmp -s "${files[$i]}" "${files[$j]}" || maybe=" not"
    echo "${files[$i]} and ${files[$j]} are$maybe equal"
  done
done