2014-01-30 89 views
0

我正在使用Windows操作系統。Bash Shell腳本:Diff命令衝突的行格式

我的程序:

#!/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:衝突的行格式」。但是,它會生成「renamedFiles.lst」,並以我想要的方式生成。那麼,爲什麼它給了我這個答案呢?我可以修復它嗎?它並沒有真正影響我的程序,但沒有人喜歡在他們的程序中看到警告/錯誤,對嗎? :)

+0

你爲什麼要調用一個「windows shell」腳本的bash腳本? –

+0

因爲我正在使用Windows操作系統? – Gabriel

回答

1

我想這是因爲你使用--line-format(格式化所有線)和--unchanged-line-format(以格式不變線)。我猜diff沒有定義如果獲取衝突的格式說明符該怎麼辦,所以它會失敗並告訴你。你可以做的是使用例如--old-line-format=%L --new-line-format=%L --unchanged-line-format=

+0

的確,感謝你! :)這確實解決了它:P仍然保持我想要的格式(與我的程序相同),但不再發出消息。看起來很奇怪,雖然它不改變格式,但不再給出消息。無論哪種方式,感謝您的幫助,它已經解決了。 – Gabriel