Вы ошибаетесь в том, в чем проблема. Если вы запускаете свою программу с включенной трассировкой (, например. bash -x the_script
), тогда вы увидите, что произойдет.
Эти строки не определяют функции:
#Define functions to copy new files to old directory
CP_TEX=$(cp -fr ${TEX_NEW} ${GIT_DIR})
CP_JSON=$(cp -fr ${JSON_NEW} ${GIT_DIR})
Здесь мы запускаем команды и присваиваем результат этим переменным CP_TEX
и CP_JSON
.
Если бы вы действительно хотели определить функции, вы бы написали:
cp_tex() {
cp -fr ${TEX_NEW} ${GIT_DIR}
}
cp_json() {
cp -fr ${JSON_NEW} ${GIT_DIR}
}
Однако для одноразового использования нет необходимости определять функции. Я бы просто вписал их в строку, вот так:
cd "${CURRENT_DIR}" || exit $? # remember that `cd` can fail
if cmp -s "${TEX_OLD}" "${TEX_NEW}" || cmp -s "${JSON_OLD}" "${JSON_NEW}"
then
echo -e "${ALL_GOOD}"
else
echo -e "${REPLACING}"
cp -fr "${TEX_NEW}" "${JSON_NEW}" "${GIT_DIR}"
echo -e "${COMPLETED}"
fi
Это все при условии, что вы действительно работаете с файлом с именем *.tex
и файлом с именем *.json
, конечно. Если бы вы имели в виду подстановочные знаки, вам нужно было бы написать цикл, а не простую команду cmp
.