Как я могу использовать массивы глобальной переменной в псевдонимах или функциях

Как говорили другие, вам нужно будет настроить локальный почтовый сервер (sendmail, postfix, или что вы предпочитаете).

Я предполагаю, что вы делаете это из своего дома и получаете IP-адрес, который меняется так часто. Если это так, то вы обнаружите другие проблемы с отправкой электронной почты. Множество серверов просто откажут вам из-за вашего IP-адреса (см. "Спамхаус" или другие).

Чтобы обойти это, вам понадобится ретрансляция (или, в идеале, статический IP* и DNS). Ваш провайдер может предоставить вам ретранслятор (возможно, вам понадобится спросить), после чего вы просто добавите следующие директивы

Если вы используете sendmail:

 define(`SMART_HOST', `smtp.your.provider')dnl

Если вы используете постфикс:

relayhost = smtp.your.provider

Где smtp.your.provider будет вашим ретрансляционным хостом (это может быть и IP-адрес).

Вот несколько руководств для sendmail и postfix.

Я использую и то, и другое; однако, я думаю, что постфикс должен быть проще и безопаснее, но хорошие практики это то, что действительно имеет значение. На Redhat-подобных системах (Fedora, CentOS, RHEL, Oracle и т.д.) Sendmail, кажется, используется по умолчанию, в то время как другие используют Postfix.

*статический IP не нужен, но делает жизнь намного проще.

1
30.07.2014, 01:28
1 ответ

Когда Вы пишете:

alias thm="cd $SET_DIR/sites/all/themes/"

Вы расширяете значение SET_DIR в момент, когда Вы определяете псевдоним. Это означает, что вы получаете одно и то же значение каждый раз при запуске псевдонима, даже если вы изменили значение переменной между ними. Если вы вернете псевдоним в обратном порядке $, то переменная будет разыменована, когда вы используете псевдоним вместо:

$ foo=hello
$ alias test="echo \$foo"
$ test
hello
$ foo=world
$ test
world

Так что если вы определите псевдонимы таким образом, то вам никогда не нужно будет переопределять их при изменении SET_DIR. Вы также можете однозначно процитировать определение псевдонима.

Для вашего файла данных, Bash 4 и выше поддерживает ассоциативные массивы , что позволит вам определить ваши данные следующим образом:

declare -A theme site # This makes these variables associative arrays
add_site() {
    local shortcut=$1
    theme[$shortcut]=$2
    site[$shortcut]=$3
}
add_site x1 example1.com alpha
add_site x2 example2.com beta

Затем вы можете получить доступ к значениям, например, с помощью ${тема[x1]}. Ваши псевдонимы могут иметь форму:

alias thm="cd /var/www/\${site[\$CURRENT]}/sites/all/themes/\${themes[\$CURRENT]}"

Ваша функция sroot будет просто устанавливать CURRENT на нужный вам ключ. Псевдоним всегда приведет вас к нужному каталогу в пределах текущего сайта.

Существуют и другие подходы к определению массивов в частности, но это даст вам общую идею.

1
27.01.2020, 23:52

Теги

Похожие вопросы