我目前正在编写一个 bash 脚本,它将使用 webhook 将当前时间戳和系统的 IP(运行 Ubuntu 18.04 LTS)发送到 Slack 通道,如下所示:
##!/bin/bash
command=(curl -X POST -H \'Content-type: application/json\' --data \'{\"text\":\")
command+=("$(date)")
command+=(" IP: ")
command+=("$(hostname -I)")
command+=(\"}\' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX)
"${command[@]}"
这意味着在允许可变时间戳和 IP 的同时复制以下工作命令:curl -X POST -H 'Content-type: application/json' --data '{"text":"Tue Jul 14 15:26:50 EDT 2020 IP: XX.X.X.XX"}' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
这会返回一连串错误(此帖子的 IP 主机名已手动更改为 X):
curl: (6) Could not resolve host: application
curl: (3) Port number ended with ':'
curl: (3) Port number ended with ' '
curl: (3) Host name 'X.X.X.XX ' contains bad letter
curl: (3) [globbing] unmatched close brace/bracket in column 2
我能够确定替换"${command[@]}"
为echo "${command[@]}" | xclip -selection clipboard"
然后手动将其粘贴到终端(右键单击-> 粘贴)效果很好。不幸的是,我第一个使用的想法xclip -selection clipboard -o
似乎只是以相同的方式返回字符串echo "${command[@]}"
。
有没有办法以编程方式将剪贴板内容作为命令粘贴到 shell 中并执行它们,或者甚至可以调整初始"${command[@]}"
调用以执行字符串?如果存在我没有看到的明显更好的方法,请随时告诉我。
如果这对那些看到它的人来说是微不足道的,我提前道歉,但我对 Linux 系统和 bash 脚本都非常陌生。任何帮助将不胜感激。