как настроить слабую полезную нагрузку

Я пытаюсь интегрировать слабину с одним из моих сценариев оболочки. У меня разные условия, для которых часть сообщений в сообщении отличается.

Мой скрипт будет выглядеть так:

#!/bin/bash SLACK_URL='https://hooks.slack.com/services/****** CHANNEL="#channel" PAYLOAD="'payload={\"channel\": \"${SLACK_CHANNEL}\", \"username\": \"${USER}\", \"text\": \"$MESSAGE\", \"icon_emoji\": \":slack:\"}" 

Случай 1: условие:

  curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL 

Случай 2: условие

  curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL 

Случай 3: условие

  curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL 

В каждом случае Мое Послание должно быть другим. Я пытаюсь избежать объявления полезной нагрузки каждый раз с помощью специального сообщения, ища опцию, где я могу разобрать свое пользовательское сообщение на мою полезную нагрузку. Помоги пожалуйста.

  • В чем разница -a и -e в условных выражениях bash?
  • Является ли «Арифметическое расширение» ожидаемым действием на vars внутри `[[` tests?
  • Как использовать временную переменную среды в bash for loop?
  • Bash - Манипуляция с непрерывной строкой
  • диалоговое меню для отображения файлов, выберите один из них, а затем удалите его
  • RegEx в bash для извлечения строки после первого разделителя
  • Является ли `~ / Documents` относительным или абсолютным путем?
  • Замена только определенных переменных на envsubst
  • One Solution collect form web for “как настроить слабую полезную нагрузку”

    Вы можете создать свой $PAYLOAD по частям на основе ваших условий:

     PAYLOAD="payload={" PAYLOAD="$PAYLOAD\"channel\": \"${SLACK_CHANNEL}\"," PAYLOAD="$PAYLOAD\"username\": \"${USER}\"," case $MESSAGE_TYPE in 1) PAYLOAD="$PAYLOAD \"text\": \"$MESSAGE1\"," ;; 2) PAYLOAD="$PAYLOAD \"text\": \"$MESSAGE2\"," ;; 3) PAYLOAD="$PAYLOAD \"text\": \"$MESSAGE3\"," ;; esac PAYLOAD="$PAYLOAD \"icon_emoji\": \":slack:\"" PAYLOAD="$PAYLOAD}" curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL 

    В качестве альтернативы вы могли бы Bash лениво оценить $PAYLOAD с eval только вы правильно установили $MESSAGE .

     PAYLOAD_PATTERN='payload={\"channel\": \"${SLACK_CHANNEL}\", \"username\": \"${USER}\", \"text\": \"$MESSAGE\", \"icon_emoji\": \":slack:\"}' MESSAGE=... eval "PAYLOAD=\"$PAYLOAD_PATTERN\"" curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL 

    Это общий шаблон в программировании оболочки. Обратите внимание, однако, что если какая-либо часть переменных, расширенная как часть $PAYLOAD_PATTERN включает недоверенный ввод, использование eval таким образом может привести к проблемам безопасности, поскольку противник, который имеет возможность влиять на любую часть произвольного ввода, может использовать это для получить произвольные возможности выполнения кода в системе, выполняющей скрипт.

    Linux и Unix - лучшая ОС в мире.