Я работаю над кодом удара, и я нашел функцию CheckOtherFiles
то, что я предполагаю, используется, чтобы проверить если файл ($1
) более свежо из файла $WS_ROOT/$NomeVista/COMP/COMP_COMPILE
.
CheckOtherFiles
назван с одним параметром, который является файлом с полным путем.
Вот код:
function CheckOtherFiles {
fver=$1
if [[ -r $fver ]]
then
if [[ -r $WS_ROOT/$NomeVista/COMP/COMP_COMPILE ]]
then
filecheck=`/bin/ls -1t $fver $WS_ROOT/$NomeVista/COMP/COMP_COMPILE | head -1`
if [[ ${filecheck##*/} = ${fver##*/} ]]
then
return 1
fi
fi
fi
return 0
}
Я прочитал руководство удара и нашел эту полезную ссылку, но это неясно значение:
if [[ ${filecheck##*/} = ${fver##*/} ]]
Я также сомневаюсь, что существует ошибка в нем.
Так, Вы могли помочь мне понимающий значение этой части кода?
Также я действительно ценю любое предложение для улучшения этой функции.
Как отвечено в связанном вопросе, это удаление подстроки :
${string##substring}
Deletes longest match of $substring from front of $string.
В этом случае, это удаляет путь и сохраняет только basename
:
$ FILE=/etc/default/google-chrome
$ echo ${FILE##*/}
google-chrome
$ basename $FILE
google-chrome
Обычно, я придерживался бы basename
, но это - дело вкуса, лучше ли код только для записи, если это быстрее. Во всяком случае я не вижу ошибки в нем.
Однако Вы могли рассмотреть -nt
и -ot
тесты :
f1 -nt f2
file f1 is newer than f2
f1 -ot f2
file f1 is older than f2
И возможно упрощают его до:
other_file="$WS_ROOT/$NomeVista/COMP/COMP_COMPILE"
if [[ -r $fver && -r $other_file && ( $fver -nt $otherfile ) ]]
then
return 1
fi
return 0