dovecot
должен работать более или менее из коробки. Возможно, вам потребуется включить аутентификацию открытым текстом для небезопасных соединений. Раскомментируйте строку disable_plaintext_auth
и измените yes
на no
disable_plaintext_auth = no
Установите пакет с помощью команды sudo apt-get install dovecot-imapd
.
Прежде всего, добро пожаловать на сайт.
Ответ на ваш вопрос зависит от того, насколько последовательно аргументы передаются сценарию.
Если гарантируется, что
затем вы можете выполнить тест if
внутри вашего скрипта, работая со встроенной переменной $#
, которая содержит общее количество аргументов, с которыми вызывается скрипт:
#!/bin/bash
if [[ "$#" == "3" && "$3" == "create" ]]
then
create_fn <possible arguments here>
elif [[ "$#" == "2" && "$2" == "add" ]]
then
create_add <possible arguments here>
fi
Чтобы объяснить :В тесте if
мы проверяем, равно ли количество аргументов($#
)трем и третий аргумент($3
)"создать", а затем вызываемcreate_fn
(возможно с аргументами; вы не указали, требуется ли это в вашем вопросе ); или , если число или аргументы равны 2, а второй аргумент — «добавить», и в этом случае мы вызываем create_add
.
С другой стороны, если порядок аргументов строки команды -произвольный, вам придется реализовать более интеллектуальную процедуру обработки параметров, и что-то вроде getopts будет вашим другом.
Дополнительную информацию о программировании оболочки см. в Advanced Bash Scripting Guide .
Относительно второй части вашего вопроса :Функция, которую вы ищете, называется «завершение bash» и не является тривиальной вещью, в частности, поскольку вы хотите автоматически -завершить команда -аргументы строки , где возможные значения могут зависеть от позиции текущего типизированного аргумента в списке и предыдущих элементов в строке команды -. Это возможно, но не тривиально (, см., например. Как настроить завершение команд Bash?).
Я думаю, вам следует немного изменить настройку и использовать флаги опций через getops
. Однако они должны быть в начале и состоять только из отдельных букв. Пример:
#!/bin/bash
add=no
create=no
while getopts "ca" option ; do
case $option in
a) add=yes ;;
c) create=yes ;;
\?) echo 'Invalid option. Aborted.' ; exit ;;
esac
done
#shift argument numbers so that file1 is $1 etc.
shift $((OPTIND-1))
if [[ "$add" == "yes" ]] ; then
do_add_procedure
elif [[ "$create" == "yes" ]] ; then
do_create_procedure
else
do_neither
fi
В зависимости от того, как вы выполняете операторif
-(, т. е. разделяете его на два оператора ), теперь вы даже можете запустить как «создать», так и «добавить», указав обе опции. Однакоbash
-аргументы скрипта должны быть в начале вашей команды:
./script.sh -a file1 file2