Как создать длинную командную строку?

Можно использовать a /etc/postfix/main.cf файл как этот:

myorigin = localhost
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
relayhost =

Короткое объяснение параметров:

  • myorigin: это - имя хоста, которое постфиксная программа будет использовать при отправке электронного письма.
  • mydestination: это - имя (имена) хоста, для которого постфиксный сервер считает себя способным получить почту - Вы хотите localhost и любое имя хоста на машине (изучают /etc/hosts) быть перечисленным здесь.
  • mynetworks перечисляет "доверяемые" IP-адреса, от которых постфикс принимает любую электронную почту
  • relayhost: если не пустой, постфикс перешлет всю электронную почту к этому серверу для доставки; Вы хотите, чтобы это было пусто, чтобы локальная доставка работала.

Вы могли бы хотеть взглянуть на http://www.postfix.org/BASIC_CONFIGURATION_README.html для более авторитетного объяснения.

3
18.02.2011, 14:48
2 ответа

Различные части могут быть помещены в функции оболочки:

awkfilter() {
    awk '{ if ($8 ~ "isad") {print $2, $5, "SE"} else {print $2, $5, "ANT"} }'
}

toupper() {
    tr '[:lower:]' '[:upper:]'
}

dosort() {
    sort -t' ' -s -k3
}

awkfilter < /var/log/apache2/other_vhosts_access.log |
  grep -vF 127.0.0.1 |
  tr '[' '\0' |
  toupper |
  dosort

затем Вы могли сделать вещи дополнительными более легко:

dosort() {
    rev=
    if [ "$2" = "reverse" ]
    then
        rev=-r
    fi
    sort -t' ' -s -k"$1" ${rev+"$rev"}
}

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

4
27.01.2020, 21:15
  • 1
    Спасибо, Суетливое! Я также пытался достигнуть того же, однако, с конкатенацией строк. Но я думаю, что Вы дали мне более оптимальный вариант. :) –  Barun 18.02.2011, 15:02

Когда Вы работаете awk '{ ... }' на приглашении оболочки или из сценария оболочки, оболочка анализирует кавычки и передает аргумент awk w/o кавычки. То, что происходит, - то, что Вы так или иначе выполняете его с кавычками в параметре.

Править: с Вашим обновлением вопроса, в чем Вы нуждаетесь, sh -c "$final_cmd".

1
27.01.2020, 21:15
  • 1
    Как alex говорит, так или иначе кавычка остается на выполнении. Можете Вы (Barun) отправлять содержание $final_cmd и как Вы получили его набор? –  asoundmove 18.02.2011, 14:31
  • 2
    Уверенный. Я добавляю сценарий к своему исходному сообщению. –  Barun 18.02.2011, 14:47

Теги

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