Скрипт оболочки Pushover для отправки результатов вывода командной строки в Pushover.app

Скрипт оболочки Pushover для отправки результатов вывода командной строки в Pushover.app

Я пытаюсь создать/отредактировать скрипт оболочки pushover, который можно вызвать из любого скрипта или команды, и отправить вывод скрипта или команды на мой аккаунт Pushover. Следуя инструкциям на этомстраница.

Я разместил следующий скрипт оболочки /usr/local/binи добавил свой токен приложения и токены пользователя.

Я не получаю никаких уведомлений или ошибок после использования этой команды:

john$ ls | pushover.sh 2>&1 | tee file /Users/john/Desktop/results.txt

Содержание скрипта оболочки ОТРЕДАКТИРОВАНО Гленном

#!/usr/bin/env bash
         
# TOKEN INFORMATION 
_token='APPTOKEN'
_user='USERTOKEN'
         
# Bash function to push notification to registered device
push_to_mobile() {
  local t="${1:cli-app}"
  local m="$2"
  [[ -n "$m" ]] && curl -s \
    --form-string "token=${_token}" \
    --form-string "user=${_user}" \
    --form-string "title=$t" \
    --form-string "message=$m" \
    https://api.pushover.net/1/messages.json
}

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

Пример того, что работает после попытки отладки скрипта оболочки выше. Очевидно, это просто для того, чтобы доказать, что мои настройки pushover в порядке. Это сужает проблему до функции в скрипте.

#!/usr/bin/env bash

# TOKEN INFORMATION
_token='xxxx'
_user='yyyy'
_message='test'

# Bash function to push notification to registered device
curl -s \
  --form-string "token=${_token}" \
  --form-string "user=${_user}" \
  --form-string "message=${_message}" \
 https://api.pushover.net/1/messages.json

решение1

Вы правы, что первая строка функции проблематична. Вам нужно разделить команды оболочки символами новой строки или точками с запятой. Если бы вы не перенаправляли stderr, вы бы увидели что-то вродеbash: local: `[[': not a valid identifier

Попробуй это:

push_to_mobile() {
  local t="${1:cli-app}"
  local m="$2"
  [[ -n "$m" ]] && curl -s \
    --form-string "token=${_token}" \
    --form-string "user=${_user}" \
    --form-string "title=$t" \
    --form-string "message=$m" \
    https://api.pushover.net/1/messages.json
}

Хотя я бы использовал массив для параметров curl для более простого обслуживания.

push_to_mobile() {
  [[ -z "$2" ]] && return
  local curl_opts=(
    --silent
    --form-string "title=${1:-cli-app}"
    --form-string "message=$2"
    --form-string "token=${_token}"
    --form-string "user=${_user}"
  )
  curl "${curl_opts[@]}" https://api.pushover.net/1/messages.json
}

Демонстрация сообщения об ошибке:

$ f() { local a=b local c=d [[ x == x ]] && echo hello; }
$ f
bash: local: `[[': not a valid identifier
bash: local: `==': not a valid identifier
bash: local: `]]': not a valid identifier

Связанный контент