Bash Shell脚本:Diff命令冲突的行格式

时间:2014-01-30 16:03:05

标签: windows bash shell diff

我正在使用Windows操作系统。

我的节目:

#!/bin/bash

    OIFS="$IFS"
    IFS=$'\n'

    find teste1 -type f | while read -r firstResult

    do

      find teste2 -type f | while read -r secondResult

       do

        firstName=${firstResult##*[/|\\]}
        secondName=${secondResult##*[/|\\]}

         if [[ "$( echo "$firstName" | tr [A-Z] [a-z])" == "$( echo "$secondName" | tr [A-Z] [a-z])" ]]; then
          echo "$firstResult" "$secondResult" >> equal
         else
          echo "$firstResult" "$secondResult" >> notEqual
         fi

         if [[ $firstName == $secondName ]]; then
          echo "$firstResult" "$secondResult" >> equal2
         fi

       done

    done

    diff -2 "--line-format=%L" "--unchanged-line-format=" equal equal2 > renamedFiles.lst

    rm equal
    rm equal2
    rm notEqual

每当我运行此程序时,它会显示“diff:Conflicting line format”。但是,它会生成“renamedFiles.lst”并按照我想要的方式生成。那么,为什么它给我这个答案呢?我可以修理吗?它并没有真正影响我的程序,但没有人喜欢看到他们的程序上的警告/错误,对吧? :)

1 个答案:

答案 0 :(得分:1)

我认为这是因为您使用 --line-format(格式化所有行)和--unchanged-line-format(格式化未更改的行)。我猜diff没有定义如果它得到冲突的格式说明符该怎么做,所以它失败并告诉你它。你可以做的是使用例如--old-line-format=%L --new-line-format=%L --unchanged-line-format=