-1

Linux bash で次のコードが必要です。

ステップ1:

コマンドを実行して file1 を作成する コマンドを実行して file2 を作成する

file1 と 2 を比較

違いがある場合は、ステップ 1 に進みます (4 回試行し続けます。成功しない場合は、プログラムを中止します)。それ以外の場合は続行します。

今、私はこの比較に行き詰まっており、次に if ループと反復です。diff と comm を使用できることはわかっていますが、理解できません。特定の出力が必要ないので、これらの 4 つの反復を管理する方法を教えてください。誰でも私に知らせてもらえますか?

4

2 に答える 2

1

一時ファイルはスキップできます。これは、「試行」の概念を 1 つの成功にまとめるか、それ以上のコードを書くのに失敗するために使用する関数を提供するバージョンです。

#!/bin/bash

cmd_1="$1"
cmd_2="$2"

iterate () {
    for attempt in {1..4} ; do
        echo attempt $attempt
        if diff  <($cmd_1) <($cmd_2) >/dev/null ; then
            return   # still has the diff's successful exit status
        fi
    done
    false
}

if iterate ; then
    echo successful
else
    echo aborted ; false  # propagate failure status out of script
fi

#---eof

私はそれを詰め込ん./fooで実行可能にし、以下でテストしました:

$ ./foo 'cat foo' 'cat foo' 
attempt 1
successful
$ ./foo 'cat foo' 'cat /dev/null' 
attempt 1
attempt 2
attempt 3
attempt 4
aborted
$ 
于 2013-07-25T08:18:27.417 に答える
0
if cmp -s "$a" "$b"; then
    echo Same
else
    echo Differ
fi

または、 diff if diff "$file_a" "$file_b" &> /dev/null ; を使用できます。then echo "ファイルは同じです" そうでなければ echo "ファイルが異なります" fi

于 2013-07-25T06:47:02.633 に答える