Если в двоичном файле для incrontab (который я не знаю, никогда не использовал) не установлен бит SGID, это может вызвать странное поведение такого типа.
Установите его с помощью chmod g + s / path / to / binary
(/ usr / bin / incrontab, возможно?)
Вы можете проверить, установлено ли оно с помощью:
ls -l / path / to / binary
(пример)
ls -l /usr/bin/crontab
-rwxr-s--x 1 root crontab 44336 Jun 23 18:47 /usr/bin/crontab
Вместо:
cp app/index.html.mob MobileApp/www/index.html
sed -i'' "s#MOBILE_APP_API_URL#\"$mobile_app_api_url\"#g" MobileApp/www/index.html
Просто сделайте:
sed "s#MOBILE_APP_API_URL#\"$mobile_app_api_url\"#g" \
< app/index.html.mob > MobileApp/www/index.html
Вы также можете удалить зависимость от ksh93
/bash
, изменив верхнюю часть на:
environment=$1
case $environment in
"") environment=beta;;
live|beta) ;;
*)
printf >&2 'Invalid environment: "%s"\n' "$environment"
exit 1;;
esac
См. также environment=${1:-beta}
.
BTW, [[ $environment =~ (live|beta) ]]
в ksh93
и bash
проверяет, содержит ли $environment
live
или beta
, что не похоже на то, что вы хотите. Вам нужно [[ $environment =~ ^(live|beta)$ ]]
для проверки того, является ли оно live
или beta
.
Вы должны понимать, что $mobile_app_api_url
не должен содержать символов
которые являются значимыми для sed в RHS s///. Точнее говоря, вам нужно
убедиться, что эта переменная содержит следующие правильно экранированные символы: viz..,
& # \ newline
перед их вставкой.
Сделайте это, чтобы обойти проблемные проблемы с переносимостью с флагом -i
в sed
:
sed 'sed-editing-commands' thefile >tmpfile && mv tmpfile thefile
Т.е. затем замените входной файл временным файлом, если команда sed
не завершилась ошибкой.
Он переносим на все известные мне реализации sed
.
Чтобы безопасно создать временное имя файла, используйте mktemp
. Хотя это не стандартная утилита, она доступна на всех Unices, к которым у меня есть доступ (OpenBSD, NetBSD, Solaris, macOS, Linux):
tmpfile=$(mktemp)
sed 'sed-editing-commands' thefile >"$tmpfile" && mv "$tmpfile" thefile