嘟嘟社区

请教MJJ一个shell脚本方面的问题


本帖最后由 xixi3 于 2022-7-22 20:17 编辑
  1. #!/bin/bash
  2. curl -X POST "https://api.day.app/key" -H ‘Content-Type: application/x-www-form-urlencoded; charset=utf-8’ -d "title=下载提醒&body="${1}下载好了"&group=下载提醒"

复制代码

这里的${1}我如果用单括号括了就没法接收参数了,但如果不括起来,传进来的参数有()时就会这样报错。

-sh: syntax error near unexpected token `(‘

不是很懂这个问题了,谷歌也不知道怎么搜了,希望有懂得MJJ能指点下。

其实我就是希望参数能传进去,然后传进去的内容按照纯文本输出。类似于'(12321)’的效果。

只能用双括号 新建变量 msg="$1下载好了"  -d "title=下载提醒&body=$msg&group=下载提醒"
本帖最后由 valueshine 于 2022-7-22 20:28 编辑
  1. "’"${1}"’文字’"${2}"’"

复制代码

要加一个单引号才能识别参数,最里面那个双引号是避免报错

Laa 发表于 2022-7-22 20:19
只能用双括号 新建变量 msg="$1下载好了"  -d "title=下载提醒&body=$msg&group=下载提醒" …

谢谢,我按你的写法写出如下效果,可以正常显示了,但是碰到特殊字符会直接吃掉。

  1. #!/bin/bash
  2. msg="$1下载好了"
  3. curl -X POST "https://api.day.app/key" -H ‘Content-Type: application/x-www-form-urlencoded; charset=utf-8’ -d "title=下载提醒&body=$msg&group=下载提醒&sound=shake"

复制代码

  1. [~] bark.sh "[爱恋&漫猫字幕组] )"
  2. {"code":200,"message":"success","timestamp":1658492707}[~] #

复制代码

$1表示第一个参数 没有${1}这种用法
可以先用别的变量获取$1的值再用${}这种方法调用

valueshine 发表于 2022-7-22 20:23
要加一个单引号才能识别参数,最里面那个双引号是避免报错

  1. -d "title=下载提醒&body="’"${1}"’"

复制代码

老哥我这样写了,但只会输出"${1}"出来。

xixi3 发表于 2022-7-22 20:29
谢谢,我按你的写法写出如下效果,可以正常显示了,但是碰到特殊字符会直接吃掉。

感觉这个应该是最终解了,虽然吃&后面的内容,但好在不会直接报错。

  1. #!/bin/bash
  2. msg="$1"
  3. curl -X POST "https://api.day.app/key" -H ‘Content-Type: application/x-www-form-urlencoded; charset=utf-8’ -d "title=下载完成&body=${msg}&group=下载提醒"

复制代码

xixi3 发表于 2022-7-22 20:47
老哥我这样写了,但只会输出"${1}"出来。

忘了,我的是json数据,不是json数据用${args}

问一下 楼主没有自建bark 的服务端吗 我自建的不能通过宝塔反代添加ssl 只能默认http 感觉不安全

valueshine 发表于 2022-7-22 20:51
忘了,我的是json数据,不是json数据用${args}

那我试试json的写法。