Передача переменной в полезной нагрузке json в сценарии оболочки

Su terminal no admite el modificador "hyper", y mucho menos tmux.

tmux es una aplicación TUI. Sólo sabe qué terminales le envían. Los terminales, en el paradigma de interfaz de terminal general POSIX, solo envían caracteres; caracteres ordinarios, caracteres de control, secuencias de escape y secuencias de control. No existe el concepto de pulsaciones de teclas sin procesar e información de teclas modificadoras transmitida por separado. tmux, al igual que otras aplicaciones TUI, no se ocupa de tales conceptos.

Algunas de las secuencias de control transmitidas por terminales y emuladores de terminales en respuesta a teclas de función y teclas extendidas pueden incluir parámetros que especifican un estado modificador instantáneo. Pero la convención DEC VT que generalmente siguen tiene solo & #x21e7; Desplazamiento de nivel 2 , y #x2387; Alt y y #x2388; Mando . No tiene un concepto de modificador "hiper", ya que los terminales DEC no tienen esa tecla. Ni siquiera tiene el concepto en primer lugar de tales secuencias de control especiales para teclas alfanuméricas; solo para (algunas teclas )en los teclados de calculadora, edición, cursor y funciones.

Lecturas adicionales

1
26.06.2019, 16:10
2 ответа

Сjq:

$ payload='{"channel": "#alerts", "username": "k8s-cronjobs-bot", "text": "", "icon_emoji": ":ghost:"}'
$ MY_ENV_VAR='"foo"'
$ echo "$payload" | jq --arg cmd "$MY_ENV_VAR" '.text = "Command " + $cmd + " run with success"'
{
  "channel": "#alerts",
  "username": "k8s-cronjobs-bot",
  "text": "Command \"foo\" run with success",
  "icon_emoji": ":ghost:"
}

Таким образом, ваш скрипт будет выглядеть так:

#!/bin/bash

COMMAND=${MY_ENV_VAR}    
payload='{"channel": "#alerts", "username": "k8s-cronjobs-bot", "text": "", "icon_emoji": ":ghost:"}'
payload=$(echo "$payload" | jq -r --arg cmd "$COMMAND" '.text = "Command " + $cmd + " run with success"')
curl -X POST --data-urlencode "payload=$payload"  "${SLACK_WEBHOOK}"
2
27.01.2020, 23:22

Или используйте printf, чтобы помочь с сочетанием цитат:

printf -v payload '{"channel": "#alerts", "username": "k8s-cronjobs-bot", "text": "Command %s run with success", "icon_emoji": ":ghost:"}' "$MY_ENV_VAR"
curl -X POST --data-urlencode "payload=$payload" "$SLACK_WEBHOOK"
2
27.01.2020, 23:22

Теги

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