ファイルが存在するか、空でないか、他のファイルと同じであることを確認してください。

ファイルが存在するか、空でないか、他のファイルと同じであることを確認してください。

ファイルが存在するか、空でないか、他のファイルと同じかどうかを確認したいと思います。もしそうなら、何もしないでください。

同じでない場合はを使用してくださいcat "some text"

ファイルが存在しないか空であってもファイルを生成します。cat some text

いくつかの回避策を試しましたが、ある条件を満たすたびに別の条件が失敗するか、ファイルが存在しない場合は失敗します。

この問題を解決する最もクリーンな方法は何ですか?これらすべてがbashを使用していますか?

ベストアンサー1

if [ -f file1 ] && [ -s file1 ] && [ -f file2 ] && [ -s file2 ] &&
    cmp file1 file2 &>/dev/null; then
    : do nothing in this case only
else
    echo "some text" >file1
    echo "some text" >file2 # or cp file1 file2
fi

コメントに基づく短いバージョン

if [ -s file1 ] && cmp file1 file2 &>/dev/null; then
    : do nothing in this case only
else
    echo "some text" >file1
    echo "some text" >file2 # or cp file1 file2
fi

おすすめ記事