Я бы использовал getopt
вместоgetopts
:
#!/usr/bin/env bash
OPT=$(getopt \
--options a:c:d:De:rs: \
--name "$0" \
-- "$@"
)
if [ $? -ne 0 ]; then
echo You are doing it wrong!
exit 1
fi
eval set -- "${OPT}"
while true; do
case "$1" in
-a) app=${2}; shift 2;;
-c) cmd=${2}; shift 2;;
-d) domain=${2}; shift 2;;
-D) Debug=1; shift;;
-e) env=${2}; shift 2;;
-r) Doit=1; shift;;
-s) subapp=${2}; shift 2;;
--) break;;
esac
done
echo "Env: ${env}"
echo "App: ${app}"
echo "Subapp: ${subapp}"
echo "Cmd: ${cmd}"
echo "Doit: ${Doit}"
echo "Debug: ${Debug}"
$./mwctl -a weblogic -c start -s admin -e trn -r -D
> Env: trn
> App: weblogic
> Subapp: admin
> Cmd: start
> Doit: 1
> Debug: 1
$./mwctl -D -a weblogic -c start admin -e trn -r
> Env: trn
> App: weblogic
> Subapp:
> Cmd: start
> Doit: 1
> Debug: 1
Обратите внимание, что когда вы гуглите getopts
по сравнению с getopt
, вы обнаружите, что многие люди жалуются на getopt
. Насколько я могу судить, речь всегда идет о более старой версии getopt
, которая действительно содержала много ошибок. По моему опыту, getopt
имеет больше возможностей, а также более надежен, чем getopts
.
Чтобы проверить, установлена ли у вас расширенная версия getopt
, вы можете запустить
getopt -T
echo $?
Если на выходе 4
, у вас есть расширенная версия.
Используя CRON или AT, вы можете настроить расписание для запуска сценария или программы в соответствии с любым желаемым расписанием, например, в определенное время, повторяющееся каждый день или один раз в неделю.
Найдите linux CRON иcrontab -e
, а также Linux AThttps://linux.die.net/man/1/at
Что касается скрипта или программы, которую нужно запустить, то это зависит от вас. Не нужно быть сложным, просто выполните поиск слов в определенном файле журнала, если найдете, то сделайте что-нибудь.
что-то можно отправить по электронной почте с сообщением о том, что найдено, или просто создать текстовый файл с надписью «НЕ НАЙДЕНО» или «НАЙДЕНО {с подробным описанием}»
вы хотели бы изучить сценарии оболочки BASH.
Первое, что приходит на ум, это линуксgrep -l "word_pattern" filename
Если команда grep
не находит шаблон вашего слова в файле, она ничего не возвращает, и это можно использовать в сценарии оболочки BASH в качестве условия не найдено .