bash 論理比較は、,v で終わる RCS ファイルに対して間違った答えを返す

bash 論理比較は、,v で終わる RCS ファイルに対して間違った答えを返す

コマンドはls -al dog RCS/dog,v戻ります

-rw-r--r-- 1 simon simon   0 Apr 13 19:25 dog
-r--r--r-- 1 simon simon 191 Apr 13 19:28 RCS/dog,v

RCS/dog,vよりも新しいdogが、

if [[ RCS/$dog* -nt dog ]] ; then echo not older than dog ; else echo older than dog ; fi

を返しますolder than dog。 ,v で終わらないファイルの場合、この比較は正しく実行されるので、 で終わるファイルに問題があるようです,v。誰かこれを修正する方法を提案してもらえますか?

答え1

あなたの例では、変数式が期待するところリテラル:

if [[ RCS/$dog* -nt dog ]] ; then echo not older than dog ; else echo older than dog ; fi

あれは、

  • これは変数です:$dog設定されていない場合は、次のようなものが表示されます。RCS/*(または、$dog設定されているcat)。

  • これは文字通りです:dog、 そしてRCS/dog*一致するRCS/dog,v

関連情報