Команда 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