Я создаю пакет дистрибьютора AWS для изменения конфигурации системного журнала на разных вариантах серверов Linux. Я написал несколько простых сценариев bash для установки, удаления и обновления. Я думал, что это будет универсально. Однако сегодня я узнал, что AWS использует ш
для выполнения скрипта (т.е. ш установить.ш
), а в Ubuntu/Debian по умолчанию используется DASH, а не BASH. По этой причине мои сценарии терпят неудачу:
ошибки обновления: update.sh: 3: update.sh: функция: не найдена
update.sh: 9: update.sh: синтаксическая ошибка: "}" неожиданно
не удалось запустить команды: статус выхода 2
Не удалось установить пакет; статус установки не удалось
Я не могу изменить поведение AWS. И я не хочу изменять какие-либо конфигурации на сервере. Итак, может показаться, что мои единственные варианты - это изменение самого файла сценария?
Первое предпочтение было бы сделать сценарий универсальным, чтобы он мог работать в любой версии Linux. Второй вариант — создать другой сценарий для Debian, совместимый с DASH.
К сожалению, я не нашел много информации о программировании тире. Какие-либо предложения?
Рассматриваемые 3 скрипта....
install.sh
#!/бин/баш
функция установлена {
если sudo ls /etc/rsyslog.d/xdr.conf >/dev/null 2>&1; тогда
истинный
еще
ЛОЖЬ
фи
}
если установлен; тогда
выход 0
еще
sudo cp xdr.conf /etc/rsyslog.d/xdr.conf
перезапустить службу sudo rsyslog
фи
удалить.sh
#!/бин/баш
функция установлена {
если sudo ls /etc/rsyslog.d/xdr.conf >/dev/null 2>&1; тогда
истинный
еще
ЛОЖЬ
фи
}
если установлен; тогда
sudo rm /etc/rsyslog.d/xdr.conf
перезапустить службу sudo rsyslog
еще
выход 0
фи
update.sh
#!/бин/баш
функция isDiff {
если sudo diff xdr.conf /etc/rsyslog.d/xdr.conf >/dev/null 2>&1; тогда
ЛОЖЬ
еще
истинный
фи
}
если естьРазница; тогда
sudo cp xdr.conf /etc/rsyslog.d/xdr.conf
перезапустить службу sudo rsyslog
еще
выход 0
фи