Pushover shell 脚本将命令行输出的结果发送到 Pushover.app

Pushover shell 脚本将命令行输出的结果发送到 Pushover.app

我正在尝试创建/编辑可以从任何脚本或命令调用的 Pushover shell 脚本,并将脚本或命令的输出发送到我的 Pushover 帐户。按照此

我已放置以下 shell 脚本/usr/local/bin并添加我的应用程序令牌和用户令牌。

使用此命令后,我没有收到任何推送通知或错误:

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

shell 脚本的内容由 Glenn 编辑

#!/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
}

我假设冲突发生在第一行,可能在引用中,但在尝试了几种不同的变化后都没有成功。

尝试调试上述 shell 脚本后,运行情况的示例。显然,这只是为了证明我的 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

您说得对,函数的第一行有问题。您需要用换行符或分号分隔 shell 命令。如果您没有重定向 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

相关内容