Linux に移行しており、次の Windowscmd
コマンドを変換する必要があります。
fc file1.txt file2.txt | find /i "no se han encontrado diferencias" > nul && set equal=yes
orで代用できるfc
ようですが、この部分はどうすればいいのかわかりませんね、たぶん声明...diff
comm
find
grep
&&
if
答え1
これらのWindowsコマンドの機能を推測すると、sh
POSIXスクリプトの対応するコマンドは次のようになります。
equal=no
cmp -s file1 file2 && equal=yes
両方のファイルを読み取ることができ、同じ内容(バイト単位)を持つ場合、変数はにequal
設定されます。yes
あるいは、一部のcmp -s
システム(Linuxベースのシステムを含む)ではdiff -q
。diff -q
q
静かな)とほとんどのcmp -s
(s
静かな)はファイルを読み取れない場合はエラーメッセージを報告します。したがって、diff
そのシステムはパフォーマンス上の理由から好むことができます。cmp
busybox
cmp
busybox
diff
busybox
diff -q
答え2
Windowsコマンドはそれを使用して2つのファイルを比較し、出力fc
から「違いなし」メッセージを取得するようです。そのメッセージが表示されたら、変数equal
がに設定されますyes
。
unixコマンドをcmp
使用してファイルを比較し、一致する場合は0の出力を返すことができます。これを直接テストできるため、「出力検索」機能は不要です。
[[ -z "$(cmp file1 file2 2>&1)" ]] && equal=yes
答え3
bash
シェルでは&&
、演算子はプロセス制御に使用される論理ANDで、最初のプロセスがエラーで終了しない場合は2番目のプロセスが実行されます。デュアルパイプ(||
)も同様に機能しますが、ORステートメントであり、前のコマンドが失敗した場合に実行されます。
sample_file
したがって、次のファイル名が与えられました。
aaa
bbb
123
ccc
ddd
注文する
grep ccc sample_file >/dev/null && echo found || echo not found
「発見」をエコーし、これは――
grep cow sample_file >/dev/null && echo found || echo not found
「見つかりません」と表示されます。
echo ステートメントを変数の代入で置き換えます。